【Breadth-first Search 】专题3

529 Minesweeper

输入:一个二维矩阵,一些修改规则。
 如果点到一个隐藏的地雷M,把它改为X,游戏结束
 如果点到一个E,且其周围8邻接的范围没有地雷,那么应该把8邻接的范围的格子全部翻开为E
 如果翻开的格子的八邻接范围有隐藏的地雷,就将其标注了地雷的数目1-8而非E。(规则拷贝链接)

输出:扫雷后的矩阵。
分析:从第二条规则可以看到这是需要迭代递归的。递归过程可以从一个节点开始,不断查找邻接点,扩展下去,也可以沿着节点一层一层扩展下去。前者是DFS,后者是BFS。和前面的几道题目是一样的。
这个题目的难点1是英语问题,没有理解 If an empty square (‘E’) with no adjacent mines is revealed, then change it to revealed blank (‘B’) and all of its adjacent unrevealed squares should be revealed recursively。 难点2 是计算邻接点坐标变化的change数组。知道8个方向上xy坐标值得变化。
 看代码会发现,依然使用的是BFS的模板。有了套路真好。有时间再回头看看DFS的套路。整个做完DFS并没有目前对BFS的套路感觉。
代码

102. Binary Tree Level Order Traversal

我认为不值得再写个新文章。如果从BFS的习题练习到这里,大概已经形成思路。套用即可。最近在用idea写LeetCode的代码。我认为idea就是开发工具界的搜狗输入法。好用,好用,真好用。
代码

199. Binary Tree Right Side View

输入:二叉树
输出:从右边站着看二叉树,从上到下得到的值。
分析:这与102比较,102要求记下一层中的每一个节点的值,199要求记录下一层中最右边节点的值。用BFS思路的话,只要把上一题的代码拷贝过来,改改即可。用DFS思路的话,也是拷贝上一题的代码,改改就能跑起来。如果能先遍历左节点,每层只调用一次list的add方法,速度会更快。
代码

863. All Nodes Distance K in Binary Tree

输入:二叉树,目标节点,距离K
输出:所有距离目标节点距离K路径的节点值列表
思路1:在这里插入图片描述

首先找到根节点距离target node 的距离 rootDistance;
其次,存储所有节点与父节点的map
最后,一个节点距离目标节点的距离t = 其父节点距离目标的节点 + 1
假设dist[i] 表示值为i的节点距离目标节点的距离。dist[3]=1,dist[5]=0,dist[1]=dist[3]+1,dist[2]=dist[5]+1。考虑到这里,我就认为dist[node]=dist[node.parent]+1.假设在node3和node5之间加一个节点node9,实际dist[9]=1,按照公式dist[9]=dist[3]+1.不正确。
这种通过一两个节点(特例)来总结规律的情况,需要考虑全所有的情况。

纠正思路1:
1 树的遍历不一定非要从跟节点开始
2 直观地看。如果target 在一个节点的左子树,距离为dist,则这个节点的右子树上距离为K-dist的节点都符合要求。当然,target节点子树上再遍历K层的元素也符合要求。例如目标节点是6,K=2。节点5与节点6距离为1,那么节点5的右子树上,与节点5距离为K-1=1的节点符合要求。节点6距离节点3的距离为2,节点3符合要求。当然对于节点6的子节点,距离为K的子节点也符合要求。
3 如果 target在右子树上,情形也是一样的。
这道题目最好不要看做树,而是看做图。因为当看做树的时候会更多的去考虑父子关系和父子节点。如果看做图,则所有节点地位相同。
代码方法:distanceKV2

思路2:
1 存储所有节点与父节点的map。
2 将node5加入到队列。dist=0。
3如果dist<K, 弹出队列所有元素,将每个元素的子节点,父节点加入到队列。dist++。调回2。
4如果dist=K,弹出队列所有元素,将元素值放入list中,作为结果集。
做的过程中会发现有重复处理的元素,不合理的结果。这时候用一个set,在加入到队列之前,判断一下是否已经处理过。
代码方法:distanceK
代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424714.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十五期:一个用户至少“值”100美元,美国最“贵”数据法案CCPA明年初实行!

还在急于应对欧洲GDPR&#xff08;General Data Protection Regulation&#xff0c;通用数据保护条例&#xff09;&#xff1f;那你就OUT了&#xff01; 作者&#xff1a;文摘菌 大数据文摘出品 作者&#xff1a;刘俊寰 还在急于应对欧洲GDPR(General Data Protection Regul…

【数据结构与算法】【算法思想】【推荐系统】向量空间

背景知识 欧几里得的距离公式 推荐系统方法 应用 如何实现一个简单的音乐推荐系统&#xff1f; 1. 基于相似用户做推荐 找到跟你口味偏好相似的用户&#xff0c;把他们爱听的歌曲推荐给你&#xff1b; 2. 基于相似歌曲做推荐 找出跟你喜爱的歌曲特征相似的歌曲&#x…

第十六期:AWS 瘫痪:DNS 被 DDoS 攻击了 15 个小时

AWS警告客户&#xff0c;分布式攻击严重阻碍网络连接&#xff0c;殃及众多网站和应用软件&#xff0c;云巨头AWS遭到攻击后&#xff0c;今天其部分系统实际上断。网。 作者&#xff1a;佚名来源|2019-10-23 15:17 AWS警告客户&#xff0c;分布式攻击严重阻碍网络连接&#xff…

【Breadth-first Search 】752. Open the Lock

输入&#xff1a;deadends 是指针终止状态列表&#xff0c;target 是希望到达的指针状态&#xff0c;初始化指针状态是0000。 输出&#xff1a;如果指针能够到达target状态&#xff0c;则变化的最少步骤是多少。如果不能到达target状态&#xff0c;返回-1。 分析&#xff1a;指…

Spring Security在标准登录表单中添加一个额外的字段

概述 在本文中&#xff0c;我们将通过向标准登录表单添加额外字段来实现Spring Security的自定义身份验证方案。 我们将重点关注两种不同的方法&#xff0c;以展示框架的多功能性以及我们可以使用它的灵活方式。 我们的第一种方法是一个简单的解决方案&#xff0c;专注于重用现…

【数据结构与算法】【算法思想】【MySQL数据库索引】B+树

B树特点 考虑因素 支持按照区间来查找数据 磁盘 IO 操作 N叉树 树的高度就等于每次查询数据时磁盘 IO 操作的次数 在选择 m 大小的时候&#xff0c;要尽量让每个节点的大小等于一个页的大小。读取一个节点&#xff0c;只需要一次磁盘 IO 操作。&#xff08;分裂成两个节点&am…

第十七期:2019人工智能统计数字和一些重要事实

人工智能(AI)每天在以惊人的速度发展。这项技术在2018年已经取得了巨大的成功&#xff0c;简化医疗保健业的工作流程&#xff0c;降低制造业的间接费用&#xff0c;并减少教育业的行政工作量。现在是2019年&#xff0c;每天似乎都有一家新的AI初创公司冒出来&#xff0c;致力于…

Filter和Listener

javaweb三大组件1. Filter&#xff1a;过滤器 2. Listener&#xff1a;监听器3. servlet Filter&#xff1a;过滤器 1. 概念&#xff1a;* 生活中的过滤器&#xff1a;净水器,空气净化器&#xff0c;土匪、* web中的过滤器&#xff1a;当访问服务器的资源时&#xff0c;过滤器可…

【Breadth-first Search 】934. Shortest Bridge

输入&#xff1a;一个二维数组&#xff0c;每个元素的值为0/1。 规则&#xff1a;所有连在一起的1是一个岛屿&#xff0c;数组中包含2个岛屿。连在一起是指上下左右4个方向。可以将0变为1&#xff0c;将2个岛屿链接在一起。 输出&#xff1a;最小改变多少个0就可以将2个岛屿链接…

[Leetcode][第78题][JAVA][子集][位运算][回溯]

【问题描述】[中等] 【解答思路】 1. 位运算 复杂度 class Solution {List<Integer> t new ArrayList<Integer>();List<List<Integer>> ans new ArrayList<List<Integer>>();public List<List<Integer>> subsets(int[] n…

第十八期:闲鱼上哪些商品抢手?Python分析后告诉你

经常看到有朋友在闲鱼卖些小东西又或是自己擅长的一些技能&#xff0c;都能为他们带来不错的 睡后收入。 作者&#xff1a;星安果 1.目标场景 经常看到有朋友在闲鱼卖些小东西又或是自己擅长的一些技能&#xff0c;都能为他们带来不错的睡后收入。 闲鱼上大量的商品&#xf…

【Breadth-first Search 】785. Is Graph Bipartite?

输入&#xff1a;一个无向图graph。graph[i] 的值是一些节点&#xff0c;表示从i到这些节点有边。图中节点用0到graph.length-1表示。这个图没有指向自己的边&#xff0c;也就是说节点i不会有指向节点i的边。输入中不会有重复的边。 输出&#xff1a;如果这个图是bipartite&…

[Leetcode][第1143题][JAVA][最长公共子序列][LCS][动态规划]

【问题描述】[中等] 【解答思路】 时间复杂度&#xff1a;O(N^2) 空间复杂度&#xff1a;O(N^2) class Solution {public int longestCommonSubsequence(String text1, String text2) {int m text1.length(), n text2.length();int[][] dp new int[m 1][n 1];for (int i …

第十九期:程序员节,女朋友偷偷送了我这个...

10 月 24 日&#xff0c;本是个寻常的日子&#xff0c;但是在新时代的中国&#xff0c;却赋予了它新的意义。 作者&#xff1a;技术栈 10 月 24 日&#xff0c;本是个寻常的日子&#xff0c;但是在新时代的中国&#xff0c;却赋予了它新的意义。 正是广大的程序员们&#xff…

【Breadth-first Search 】103. Binary Tree Zigzag Level Order Traversal

输入&#xff1a;一颗二叉树 输出&#xff1a;这棵树的之字形层次遍历。 规则&#xff1a;之字形层次遍历是指第一层从左到右遍历&#xff0c;第二层从右到左遍历。 分析&#xff1a;这与102的区别就是有从左到右&#xff0c;从右到左遍历的交替过程。我们习惯从左到右遍历。最…

将小数点后的0去掉

decimal d 0.0500M; var C d.ToString("0.##");//0.05 转载于:https://www.cnblogs.com/macT/p/10928118.html

第二十期:黄金三步法 | 汇报时,如何让老板快速抓住重点?

对事物的归类分组是我们人类的天性&#xff0c;我们的大脑会自动将发现的所有事物以某种持续组织起来。但如何组织才能帮助我们解决工作和生活中出现的各种复杂问题?今天&#xff0c;我们请阿里高级技术专家张建飞分享他的黄金三步法。 作者&#xff1a;从码农到工匠 对事物的…

【数据结构与算法】【算法思想】【算法总结】索引结构

“基础不是100分考60分&#xff0c;而是建摩天大楼的地基。” 为什么需要索引&#xff1f; &#xff08;1&#xff09;在实际的软件开发工作的本质都可以抽象为“对数据的存储和计算”。对应到数据结构和算法中&#xff0c;那“存储”需要的就是数据结构&#xff0c;“计算”需…

【Breadth-first Search 】279. Perfect Squares

输入&#xff1a;一个非负整数n。 输出&#xff1a;这个非负整数可以写成几个完全平方数。返回这个数量。 规则&#xff1a;完全平方数可以表示为某个整数的平方。例如&#xff1a;1&#xff0c;4&#xff0c;9… 分析&#xff1a;1349 也就是说13可以写成2个完全平方数的和。我…

vs设置html的模板快

打开vs编辑器&#xff0c;点击文件--》首选项--》用户代码片段 之后选择先对应的编辑器模板 进入里面编写相对应的代码块 之后直接在编辑器中调用。 转载于:https://www.cnblogs.com/zengsf/p/10929653.html