摘要: 55. 跳跃游戏 这道题我是从后往前做的,但由于用了递归,速度会慢一些,但整体时间复杂度也是O(N)。 我的思路其实就是找到最后一个可以到达目标位置处的下标,如果不存在这样的位置,就说明最后一个位置不可达。假设找到了,我们就需要去判断找到的这个位置是否可达,此时它的可达性与最后一个位置的可达性是完全 阅读全文
posted @ 2024-07-30 14:34 12点不睡觉还想干啥? 阅读(23) 评论(0) 推荐(0)
摘要: 455. 分发饼干 思路:既然要满足最多的小孩吃到饼干,那么肯定优先满足胃口小的更能满足最多的。因此,先对两个数组排序。每次选择最小的能满足当前孩子的饼干。 class Solution { public int findContentChildren(int[] g, int[] s) { Arr 阅读全文
posted @ 2024-07-29 19:57 12点不睡觉还想干啥? 阅读(16) 评论(0) 推荐(0)
摘要: 39. 组合总和 与216. 组合总和 III不同,不要求每个数字仅能使用一次。但这样很容易出现重复的结果,剪枝还是要注意。不过这道题让我更认识到把回溯问题看成是一个多叉树的遍历的问题,当遇到一个题目,先画出它的树结构,也就是代码随想录中的这张图,for循环(横向遍历)怎么做,递归(纵向遍历)又怎么 阅读全文
posted @ 2024-07-25 16:01 12点不睡觉还想干啥? 阅读(22) 评论(0) 推荐(0)
摘要: 77. 组合 我的这个解法还算挺简单易懂的,还是看注释 class Solution { List<List<Integer>> ans = new ArrayList(); //存储最终结果集合 List<Integer> tmp = new ArrayList(); //记录单次的path pu 阅读全文
posted @ 2024-07-24 23:50 12点不睡觉还想干啥? 阅读(20) 评论(0) 推荐(0)
摘要: 669. 修剪二叉搜索树 先贴上我自己的答案吧,一次写出来了,但其实很多地方都应该进行优化,没有完全利用好搜索树的性质。先看注释,理清自己的思路吧。 总体思路就是先对左右两个子树修剪,再根据根节点是否需要删除进行重构。这一操作和昨天的删除二叉搜索树中的节点操作是类似的。重构部分最复杂的就是左右子树都 阅读全文
posted @ 2024-07-23 17:40 12点不睡觉还想干啥? 阅读(19) 评论(0) 推荐(0)
摘要: 235. 二叉搜索树的最近公共祖先 总体上思想与236. 二叉树的最近公共祖先思路是一致的,都是去搜索p,q的位置。这个大框架是最难理解的部分,具体可以再去看看236的题解。这道题在其基础上利用了搜索树的性质,当根节点的val大于pq两者时,就去左子树找结果即可;反之则去右子树中查找。当p,q一个比 阅读全文
posted @ 2024-07-22 14:56 12点不睡觉还想干啥? 阅读(15) 评论(0) 推荐(0)
摘要: 530. 二叉搜索树的最小绝对差 二叉搜索树经常要用到其中序遍历是递增的这一性质,因此,这里经常会用到这种套路,即中序遍历,然后使用一个pre记录前一个访问的节点,pre初值设置为null即可。 对于这道题,使用dif存储已经遍历到的位置中最小的差值,当遇到更小的差值再去更新。总体上就是中序遍历,因 阅读全文
posted @ 2024-07-21 00:22 12点不睡觉还想干啥? 阅读(33) 评论(0) 推荐(0)
摘要: 654. 最大二叉树 这道题和昨天的根据中序后序遍历构造二叉树比较相似。借鉴那个思路去做就差不多。 class Solution { public TreeNode constructMaximumBinaryTree(int[] nums) { return construct(nums, 0, 阅读全文
posted @ 2024-07-19 18:16 12点不睡觉还想干啥? 阅读(21) 评论(0) 推荐(0)
摘要: 513. 找树左下角的值 这道题与199. 二叉树的右视图的思路是相同的。也就可以分为递归和迭代两种方式,对于这两道题来说,迭代就是使用层序遍历的方式找到最左或最右的值即可。513这题不同的一点是,只需要找到最底层最左侧的值,而不需每一层都保存。因此考虑使用一个a_depth存储目前找到最深的结果的 阅读全文
posted @ 2024-07-17 23:58 12点不睡觉还想干啥? 阅读(18) 评论(0) 推荐(0)
摘要: 110. 平衡二叉树 class Solution { public boolean isBalanced(TreeNode root) { if(root == null) return true; return isBalanced(root.left) && isBalanced(root.r 阅读全文
posted @ 2024-07-17 15:24 12点不睡觉还想干啥? 阅读(20) 评论(0) 推荐(0)