随笔分类 -  算法

上一页 1 2 3 4 5 6 7 ··· 9 下一页
记录自己不大熟的LeetCode题目
摘要:题目链接 64. 最小路径和 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 表示状态 假设到了右下角,考虑一下我们要存储的信息 走到最后坐标的最小步数 当前坐标的信息,用来判断是否走到了右下角 很容易联想到使用二维数组 dp[i][j 阅读全文
posted @ 2023-04-02 13:54 Frodo1124 阅读(23) 评论(0) 推荐(0) 编辑
摘要:题目链接 70. 爬楼梯 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 表示状态 假设走到了最后一层台阶,考虑一下我们要存储的信息: 走到这最后一层台阶的方法数 当前台阶数,用于判断是否走到了最后一层台阶 这时候很容易想到使用一维数组 阅读全文
posted @ 2023-04-02 13:08 Frodo1124 阅读(31) 评论(0) 推荐(0) 编辑
摘要:题目链接 62. 不同路径 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 表示状态 假如机器人走到了最后一个格子,这时候考虑一下我们需要存储的信息: 最后一个格子的走法数量 机器人的坐标,来判断是否走到 Finish 这时候很容易想到 阅读全文
posted @ 2023-03-31 10:31 Frodo1124 阅读(16) 评论(0) 推荐(0) 编辑
摘要:题目链接 剑指 Offer 60. n个骰子的点数 思路 引子 根据概率计算公式,点数 k 出现的概率为 P(k)=k 出现的次数/总次数  我们很容易算出来 n 个骰子投掷的结果总共有 6n种,所以我们只需要再算出来点数 k 出现的次数就能算出来概率。 在 阅读全文
posted @ 2023-03-30 11:04 Frodo1124 阅读(25) 评论(0) 推荐(0) 编辑
摘要:题目链接 110. 平衡二叉树 思路 一个空树肯定是平衡二叉树,并且一个平衡二叉树的子树也是平衡二叉树。利用这两条性质我们可以推断出代码中含有 root == null -> return true 和 isBalanced(root.left) && isBalanced(root.right)。 阅读全文
posted @ 2023-03-29 09:32 Frodo1124 阅读(26) 评论(0) 推荐(0) 编辑
摘要:题目链接 面试题59 - II. 队列的最大值 思路 可以看参考题解:如何解决 O(1) 复杂度的 API 设计题 一开始想到使用单变量 max 来存储最大值,但是会产生两点问题: 当 max 弹出队列之后,下一个最大值是多少没法知道 如果有多个 max,那么当一个最大值弹出队列之后,队列中还有没有 阅读全文
posted @ 2023-03-28 20:02 Frodo1124 阅读(34) 评论(0) 推荐(0) 编辑
摘要:题目链接 239. 滑动窗口最大值 思路 单调队列的使用方法,可以参考【单调队列】LeetCode 面试题59 - II. 队列的最大值 在本题中将滑动窗口的移动看作往队列中放数和取数的过程,实际上和上面链接中的解法一样。 代码 class Solution { public int[] maxSl 阅读全文
posted @ 2023-03-28 17:35 Frodo1124 阅读(25) 评论(0) 推荐(0) 编辑
摘要:题目链接 121. 买卖股票的最佳时机 思路 状态转移方程为 dp[i]=max(0,dp[i1],prices[i]min),设置 dp[0] = 0,所以在取最大值的过程中可以省略0,只需要写 dp[i] = Math.max(dp[i - 1], prices[i] - 阅读全文
posted @ 2023-03-27 16:12 Frodo1124 阅读(21) 评论(0) 推荐(0) 编辑
摘要:题目链接 剑指 Offer 46. 把数字翻译成字符串 思路 这个问题与 dp 中的经典问题“跳台阶”问题十分类似,在跳台阶问题中我们是选择跳一个台阶或者两个台阶,而在这个问题中我们是选择再统计一个字符还是再统计两个字符。即我们在遍历到第 i 个字符的时候,可以把它当做前面 i1 个字符接 阅读全文
posted @ 2023-03-27 10:32 Frodo1124 阅读(28) 评论(0) 推荐(0) 编辑
摘要:题目链接 剑指 Offer 62. 圆圈中最后剩下的数字 思路 经典约瑟夫环问题,可以使用找规律的方法进行解决。 以 n = 8, m = 3为例,下面这幅图展示了模拟执行的全过程,用 F(n,m) 表示最后存活的人的索引。 从8个人开始,每次杀掉一个人,去掉被杀的人,然后把杀掉那个人之后的第一个人 阅读全文
posted @ 2023-03-21 09:50 Frodo1124 阅读(30) 评论(0) 推荐(0) 编辑
摘要:题目链接 88. 合并两个有序数组 思路 看到题目的第一感觉就是用双指针进行原地合并,但是 nums1 的元素都在数组头部,如果正序合并的话非常容易破坏 nums1 的结构。 nums1 在数组尾部给我们留出了足够的额外空间,这一部分是不怕被破坏的,所以可以从数组尾部开始遍历,逆序合并。 代码 cl 阅读全文
posted @ 2023-03-07 15:45 Frodo1124 阅读(32) 评论(0) 推荐(0) 编辑
摘要:题目链接 264. 丑数 II 思路 根据题目中的样例,可以进行拆分 1,1×2,1×3,2×2,1×5,2×3,2×4,3×3,3×4,3×5 观察能发现,这些多项式能分成下面三组: $$ 乘 2: 1×2, 2×2, 3×2, 4×2, 5×2, 6×2, 8×2, 阅读全文
posted @ 2023-03-07 15:24 Frodo1124 阅读(25) 评论(0) 推荐(0) 编辑
摘要:题目链接 1429. 第一个唯一数字 给定一系列整数,插入一个队列中,找出队列中第一个唯一整数。 实现 FirstUnique 类: FirstUnique(int[] nums) 用数组里的数字初始化队列。 int showFirstUnique() 返回队列中的 第一个唯一 整数的值。如果没有唯 阅读全文
posted @ 2023-03-07 14:03 Frodo1124 阅读(79) 评论(2) 推荐(0) 编辑
摘要:题目链接 4. 寻找两个正序数组的中位数 思路 分治 代码 class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { if(nums1.length > nums2.length){ int[] 阅读全文
posted @ 2023-03-07 13:51 Frodo1124 阅读(71) 评论(0) 推荐(0) 编辑
摘要:题目链接 526. 优美的排列 思路 与【DFS】LeetCode 46. 全排列思路类似。 代码 class Solution { private int result = 0; private boolean[] used; public int countArrangement(int n) 阅读全文
posted @ 2023-03-07 10:22 Frodo1124 阅读(21) 评论(0) 推荐(0) 编辑
摘要:题目链接 698. 划分为k个相等的子集 思路 这道题的核心在于:将数组划分为k个组,数组的每个元素只有可能属于一个组合. 以题目给的nums = [4, 3, 2, 3, 5, 2, 1], k = 4为例,此时target=5. 划分为4个组就相当于四个组合【】,【】,【】,【】.初始状态下均是 阅读全文
posted @ 2023-03-07 10:07 Frodo1124 阅读(102) 评论(0) 推荐(0) 编辑
摘要:题目链接 77. 组合 思路 DFS 模板题 代码 class Solution { private List<List<Integer>> result = new ArrayList<>(); private Deque<Integer> path = new ArrayDeque<>(); p 阅读全文
posted @ 2023-03-06 14:59 Frodo1124 阅读(20) 评论(0) 推荐(0) 编辑
摘要:题目链接 47. 全排列 II 思路 借用代码随想录的图。 以最右侧的分支为例,首先将 2 摆在第一位,剩下两个 1,在走完左边的 1 分支之后,对右边的 1 进行判断,发现右边的 1 还是和左边的一样,摆在第二个位置上(因为 used[i - 1] == false,说明左边的 1 没有使用)。因 阅读全文
posted @ 2023-03-06 14:31 Frodo1124 阅读(23) 评论(0) 推荐(0) 编辑
摘要:题目链接 46. 全排列 思路 本题是求排列问题.与组合问题不同的是,在排列问题中,不同的数字顺序被视为不同的排列,比如 [1,2] 与 [2,1] 是两种不同的排列。 搜索树如下图所示,引用自代码随想录 在组合问题的 dfs 算法上进行一点小修改即可,参考【DFS】LeetCode 78. 子集的 阅读全文
posted @ 2023-03-06 13:20 Frodo1124 阅读(28) 评论(0) 推荐(0) 编辑
摘要:题目链接 90. 子集 II 思路 去重方法与【DFS】LeetCode 40. 组合总和 II思路相似 代码 class Solution { private List<List<Integer>> result = new ArrayList<>(); private Deque<Integer 阅读全文
posted @ 2023-03-06 11:42 Frodo1124 阅读(26) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 ··· 9 下一页
点击右上角即可分享
微信分享提示