![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法刷题
呵呵哈哈哒哒
这个作者很懒,什么都没留下…
展开
-
236. 二叉树的最近公共祖先?
方法一:本题中因为祖先可能是自己,所以通过设置三个bool变量lf,ri,mid分别表示左子树是否有结点,右子树是否有结点,自身是否为结点。通过表达式(lf && ri)||(lf && mid)||(mid && ri)判断是否为公共祖先。思路:还是那句话,树的大多数问题都可以通过递归解决。标准答案:通过设置返回值表达式,简化了代码。具体题目见Leetcode第236题。除递归还有一种方法,有时间再写。方法二:哈希表记录父结点。原创 2023-05-08 22:40:54 · 90 阅读 · 0 评论 -
1026. 节点与其祖先之间的最大差值
标准答案,和我的不同点在于,我的写法把最大差值作为变量,而这个写法把最大差值作为返回值返回,所以更简洁。所以可以通过深度优先遍历找到每个路径,然后找到每个路径上的最大最小点,计算最大差值。找出某个节点与祖先的最大值,可以转化成到叶节点的每个路径中的最大差值。祖先指根A到结点K的唯一路径上的任意结点。*深度优先遍历用递归写,一般树的问题都可以用递归解决。详细题目见Leetcode第1026题。原创 2023-05-05 19:17:35 · 72 阅读 · 0 评论 -
1003. 检查替换后的词是否有效
思路:第一眼看到这个题目,就想到了编译原理中语法推导的过程,但是第一时间只想到了自上而下分析,没有想到用栈...使用栈,将字符串从前到后依次压进栈,如果栈尾三个元素是“abc”,就把这三个元素弹出栈。利用string类的find()函数找到字符串。*就是用各种函数硬解,所以感觉时间复杂度比较高。题目描述见Leetcode1003题。*思路很简单,但是写法很值得探讨。原创 2023-05-03 23:03:18 · 49 阅读 · 0 评论