07 2021 档案

摘要:题目出处 解题思路 从递归的角度考虑,由于青蛙一次可以跳 1 或 2 个台阶,青蛙在跳上第 n 阶台阶之前(n >= 2),可能处在两个位置上: 第 n - 1 阶台阶上 第 n - 2 阶台阶上 例如,假设 n = 4,则有图解如下: 因此设跳上第 n 阶台阶的方法有 f[n] 种,则有状态方程: 阅读全文
posted @ 2021-07-25 21:43 寻落英以得度 阅读(59) 评论(0) 推荐(0)
摘要:题目出处 解题思路 首先,用递归的思路进行思考:取数组 arr 上的一个索引位置 index,假设这是我们所求的子数组的最后一位,那么这个子数组的和取决于两个要素: arr[index] 的值 子数组前几个数字的和 那么,不难看出,这一子序列的最大值为: 条件 值 子数组前几个数字的和小于 0 ar 阅读全文
posted @ 2021-07-25 21:35 寻落英以得度 阅读(58) 评论(0) 推荐(0)
摘要:题目出处 解题思路 读题,可知:要计算斐波那契数的第 n 项,就需要知道 n-1 和 n -2 项的值。事实上,题干已经对此进行了分析,并给出了状态方程 f[n] = f[n-1] + f[n-2], 这一方程的初始条件为 f[0] = 0, f[1] = 1 综上,不难看出,如果我们建立一个数组以 阅读全文
posted @ 2021-07-16 10:59 寻落英以得度 阅读(97) 评论(0) 推荐(0)
摘要:Question 513-find bottom left tree value 解题思路 普通的广度优先搜索。不同的是广度优先搜素运用在这个问题上时,需要记得:搜索离 root 节点距离相同的一批节点时,要遵循先搜右边的,再搜左边的。这样,我们最后搜索得到的就是最左下角的节点。 代码 class 阅读全文
posted @ 2021-07-14 15:32 寻落英以得度 阅读(54) 评论(0) 推荐(0)
摘要:Question 24-swap nodes in pairs 解题思路 简单递归,如果当前节点没有后继,就返回当前节点(因为没有节点和它组成 pair 了)。否则,使当前节点的后继为自己后继的后继,并让当前节点的原后继成为它的前驱。 代码 class Solution { public ListN 阅读全文
posted @ 2021-07-13 15:44 寻落英以得度 阅读(75) 评论(0) 推荐(0)
摘要:Question 814-binary tree pruning 解题思路 利用后序遍历,自上而下地执行修建操作: 如果当前节点为叶子节点(没有子节点),那么判断它的值是否为 0,如果是,将其修剪掉,如果不是,留着它。 如当前节点非叶子节点,那么留着它。 代码 class Solution { pu 阅读全文
posted @ 2021-07-13 14:53 寻落英以得度 阅读(57) 评论(0) 推荐(0)
摘要:Question 515-find largest value in each tree row 解题思路 普通的广度优先搜索 代码 class Solution { public List<Integer> largestValues(TreeNode root) { List<Integer> 阅读全文
posted @ 2021-07-13 09:05 寻落英以得度 阅读(36) 评论(0) 推荐(0)
摘要:Question 11-container with most water 解题思路 在开始做题之前,我们首先回忆两条定理: 当长方形的底边相同时,其面积与高成正比 当一个矩形的面积一定时,其底边越短,其高越长 再来分析这道题: 列表头地址为头指针,列表尾地址为尾指针 头指针和尾指针指向的值中,较小 阅读全文
posted @ 2021-07-13 07:53 寻落英以得度 阅读(70) 评论(0) 推荐(0)
摘要:Question 16-3sum closest 解题思路 解决这道题,想法大致如下: 将一整个数组排序。 假定 3 个数中的其中一个,就位于数组之首,然后,通过双指针法,从数组的其他位置中找到剩下的两个,并计算这 3 个数字之和。 移除数组之首,让数组之首的下一个元素成为新的数组之首,并重复第二步 阅读全文
posted @ 2021-07-13 07:51 寻落英以得度 阅读(66) 评论(0) 推荐(0)
摘要:Question 876-middle of the linked list 解题思路 假设我们有两个指针,都指向链表的头节点,但一个指针(称为快指针)向后遍历的速度比另一个(称为慢指针)快一倍。那么:当快指针遍历到链表的末尾时,慢指针会正好指向链表的中央。 代码 class Solution { 阅读全文
posted @ 2021-07-09 16:30 寻落英以得度 阅读(63) 评论(0) 推荐(0)
摘要:Question 141-linked list cycle 解题思路 这里大致记录两种解题思路:哈希表 和 双指针 哈希表 首先我们准备一个HashSet,然后开始遍历这个链表。在遍历的过程中,将已经遍历到了的节点放入这个 hashset 中。如此可知:如果你搜索到一个已经存在于该 hashset 阅读全文
posted @ 2021-07-09 16:29 寻落英以得度 阅读(84) 评论(0) 推荐(0)
摘要:Question 704-binary search 解题思路 其实,二分法查找这一老掉牙的算法看上去已经没有什么科普的必要了,但是,当不少人实际用起来的时候,却总对这一算法抱有这样那样的疑惑。比如: 中间值究竟怎么取? 查找的区间应该包括边界吗? 我老是害怕因为边界值的取值问题导致漏掉了想查找的值 阅读全文
posted @ 2021-07-08 15:48 寻落英以得度 阅读(92) 评论(0) 推荐(0)
摘要:Question 9-palindrome number 解题思路 这是一道入门级别的简单题,大致解题思路这里记录两种: 暴力法 首先,负数一定不是回文数。 要判断自然数 x 是否为回文数,创建一个 int 类型的变量,循环地将 x 的最后一位“切割”下来,并“嫁接”到这个变量的末尾,这样,当 x 阅读全文
posted @ 2021-07-08 15:47 寻落英以得度 阅读(94) 评论(0) 推荐(0)
摘要:Question 617-merge two binary trees 解题思路 先序遍历,想象一下两个树如果已经被合并了,那么它的节点就一共分为两种: 重叠节点,其值为两棵树对应节点所保存值的和 独立节点,其值只来自于一棵树的对应节点。特点为其子树也为独立节点,并和它来自于同一颗树上。 代码 cl 阅读全文
posted @ 2021-07-07 23:00 寻落英以得度 阅读(72) 评论(0) 推荐(0)
摘要:Question 226-invert binary tree 解题思路 这棵树上的所有子节点的左子树将转变为该子节点的右子树,而其右子树将转变为新的左子树。 所以,解题的步骤大致可以分为: 使用深度优先搜索,先遍历左子树,后遍历右子树 如果当前节点已经没有子节点,返回自身 如果当前节点有子树,通过 阅读全文
posted @ 2021-07-07 22:58 寻落英以得度 阅读(68) 评论(0) 推荐(0)