当前位置: 首页 > news >正文

算法面试——广度优先搜索:层序遍历、最小步数

BFS 适合求最短路径/最小步数问题。核心是用队列逐层扩散。

一、二叉树的层序遍历

publicList<List<Integer>>levelOrder(TreeNoderoot){List<List<Integer>>result=newArrayList<>();if(root==null)returnresult;Queue<TreeNode>queue=newLinkedList<>();queue.offer(root);while(!queue.isEmpty()){intsize=queue.size();List<Integer>level=newArrayList<>();for(inti=0;i<size;i++){TreeNodenode=queue.poll();level.add(node.val);if(node.left!=null)queue.offer(node.left);if(node.right!=null)queue.offer(node.right);}result.add(level);}returnresult;}

二、打开转盘锁

publicintopenLock(String[]deadends,Stringtarget){Set<String>dead=newHashSet<>(Arrays.asList(deadends));Set<String>visited=newHashSet<>();Queue<String>queue=newLinkedList<>();if(dead.contains("0000"))return-1;queue.offer("0000");visited.add("0000");intsteps=0;while(!queue.isEmpty()){intsize=queue.size();for(inti=0;i<size;i++){Stringcur=queue.poll();if(cur.equals(target))returnsteps;for(Stringnext:getNext(cur)){if(!dead.contains(next)&&!visited.contains(next)){visited.add(next);queue.offer(next);}}}steps++;}return-1;}

三、单词接龙

publicintladderLength(StringbeginWord,StringendWord,List<String>wordList){Set<String>wordSet=newHashSet<>(wordList);if(!wordSet.contains(endWord))return0;Queue<String>queue=newLinkedList<>();queue.offer(beginWord);intsteps=1;while(!queue.isEmpty()){intsize=queue.size();for(inti=0;i<size;i++){Stringcur=queue.poll();char[]chars=cur.toCharArray();for(intj=0;j<chars.length;j++){charoriginal=chars[j];for(charc='a';c<='z';c++){chars[j]=c;Stringnext=newString(chars);if(next.equals(endWord))returnsteps+1;if(wordSet.contains(next)){queue.offer(next);wordSet.remove(next);}}chars[j]=original;}}steps++;}return0;}

💡 觉得有用的话,点赞 + 关注【张老师技术栈】吧!

http://www.jsqmd.com/news/1316937/

相关文章:

  • 2026年武汉离婚律师推荐精选:丁嫣律师双维模式与5位实战律师办案实录 - 本地品牌推荐
  • 紧急预警:AI演讲能力训练已进入“可信度临界点”——2024Q2全球17家头部厂商实测数据深度曝光
  • UGV Beast PT Jetson Orin AI Kit:高性能AI机器人开发平台深度解析与应用实战
  • 2026年8月陕西省西安市电信单宽带我的真实避坑攻略 - 找卡家园
  • 2026年8月上海市奉贤区移动300M单宽带小白避坑指南 - 找卡家园
  • Java初学者之———类与方法
  • 2026年8月揭阳市移动1000M宽带怎么选_办理时要注意哪些关键细节_ - 找卡家园
  • 5G SRS序列生成与物理资源映射:信道探测的底层原理与工程实践
  • [论文学习]Skill-MAS:面向自动多智能体系统的元技能进化
  • 2026年8月上海市松江区移动500M单宽带办理避坑实录 - 找卡家园
  • 2026年8月陕西省电信单宽带申请避坑实录 - 找卡家园
  • 2026 年现阶段,保山有实力的彩色沥青加工厂选哪家,走在城市彩色步道上,你脚下踩的居然不是普通沥青?-恒达新材料 - 企业官方推荐【认证】
  • Unity虚拟摇杆实现:UGUI事件系统与屏幕自适应全解析
  • 2026年8月揭阳市移动1000M单宽带小白避坑办理全攻略 - 找卡家园
  • 2026 年新消息:高唐正规的含活菌复合肥供货商有哪些,这玩意儿撒在田里,竟让我家烂秧田长出了饱满稻穗-宁慧大棚膜 - 企业信息推荐【官方】
  • 2026年|专业甄选外贸独立站建站服务商:深度测评与推荐报告
  • 2026年8月陕西省渭南市电信单宽带小白避坑指南 - 找卡家园
  • 2026年8月山东省威海市电信单宽带避坑指南!小白怎么选_ - 找卡家园
  • Unity RestClient HTTPS证书配置全攻略:解决跨平台网络通信安全难题
  • Python进阶:深入解析装饰器底层原理与5个高复用实战模式
  • 2026年8月上海市青浦区移动单宽带小白避坑办理全攻略 - 找卡家园
  • 2026年8月陕西省电信1000M单宽带小白避坑办理全攻略 - 找卡家园
  • GPT-5.4前瞻:200万上下文与持久化状态如何重塑AI协作范式
  • OBS Studio直播画面优化:从普通到专业的5个视觉升级技巧
  • 开源可观测性的基石:为什么 Grafana 不只是仪表盘,而是 DevOps 的神经中枢
  • 2026年8月山东省东营市电信单宽带避坑攻略 - 找卡家园
  • 2026年8月陕西省电信1000M单宽带套餐避坑全攻略 - 找卡家园
  • 国内做得好的防溃仓供应商推荐,防溃仓闸门/往复式给煤机/带式给煤机/防溃仓/矿用滚轮罐耳,防溃仓厂家怎么选择 - 品牌推荐师
  • DBSCAN密度聚类算法:从核心原理到实战调参指南
  • 2026年8月上海市青浦区移动300M单宽带避坑与办理指南 - 找卡家园