【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…

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;致力于…

[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…

[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…

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

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

vs设置html的模板快

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

第二十一期:干货盘点!推荐程序员使用的5款工具软件

说到程序员&#xff0c;大多数人脑袋里显现出来的第一个画面应当就是一个面容冷漠的人指尖在键盘上快速飞跃敲出一行行看不懂的字符就能轻而易举入侵别人的系统。然而想象很丰满&#xff0c;现实是很骨感的&#xff0c;大多数程序员都只是一个简单的码农。 作者&#xff1a;四…

第二十二期:New一个对象的时候发生了什么?

如你所知&#xff0c;Java是一门面向对象的编程语言。我们平常在写代码的时候也是在不停的操作各种对象&#xff0c;那么当你在写出User user new User();这样一行代码的时候&#xff0c;JVM都做了些什么呢&#xff1f; 作者&#xff1a;湖人总冠军 一、引言 如你所知&#…

【数据结构与算法】【算法思想】Dijkstra算法

图的两种搜索算法&#xff0c;深度优先搜素和广度优先搜索。这两种算法主要是针对无权图的搜索算法。针对有权图&#xff0c;也就是图中的每条边都有一个权重&#xff0c;该如何计算两点之间的最短路径&#xff1f;最短路径算法&#xff08;Shortest Path Algorithm&#xff09…

第二十三期:程序员节Keep被曝突然裁员300多人,60%是开发和运营

社交健身App “Keep”突然裁员超300人&#xff0c;而且是在1024程序员节。此次被裁的人员中&#xff0c;大约有60%的人是开发和运营&#xff0c;补偿方案为N1。 作者&#xff1a;三言财经 10月24日脉脉有多条消息称&#xff0c;社交健身App “Keep”突然裁员超300人&#xff0…

542. 01 Matrix

输入&#xff1a;元素值为0或者1的矩阵。 输出&#xff1a; 每个元素距离0的最近距离是多少。 规则&#xff1a;相邻单元格的距离是1&#xff0c;相邻是指上下左右4个方向。 分析&#xff1a;这类似于学习课程安排&#xff0c;可以从元素值为0的单元开始沿4个方向遍历。matrix[…

第二十四期:管理 | 成功领导远程IT团队的7个技巧

管理虚拟工作环境需要各种真实世界的技能和工具。以下是激发创造力和生产力的策略。为了在日益缺乏人才和竞争激烈的IT世界中取得成功&#xff0c;越来越多的企业开始依赖于地理上分散的劳动力。 作者&#xff1a;John Edwards 管理虚拟工作环境需要各种真实世界的技能和工具…

310. Minimum Height Trees

输入&#xff1a;包含n个节点的无向图。n&#xff1a;表示从0到n-1&#xff0c;n个节点。edges&#xff1a;int数组&#xff0c;是从一个节点到另外一个节点。但是没有方向。 输出&#xff1a;以哪些节点为根节点&#xff0c;具有最小高度的树&#xff0c;返回这些根节点。 规则…

计算获取最小值和最大值

比如&#xff0c;在下面的销售业绩中&#xff0c;统计业务员的销售业绩中最大值和最小值。 下面是业务数据&#xff1a; CREATE TABLE [dbo].[SalesPerformance]([ID] [int] IDENTITY(1,1) NOT NULL,[Salesman] NVARCHAR(30) NOT NULL,[OrderDate] [DATE] NULL,[Sell] DECIM…