04 2023 档案

摘要:题目链接 153. 寻找旋转排序数组中的最小值 思路 首先分析一下旋转数组可能有的状态: 左 < 中 < 右,此时最小值肯定在左边,应当收缩右边界 左 < 中,中 > 右,此时最小值肯定在右半段,应当收缩左边界 左 > 中,中 < 右,此时最小值肯定在左半段,应当收缩右边界 分析这三种状态可以发现, 阅读全文
posted @ 2023-04-28 09:05 Frodo1124 阅读(33) 评论(0) 推荐(0) 编辑
摘要:题目链接 895. 最大频率栈 思路 很容易想到使用 map:valToFreq 来记录每个值出现的频率,这是没问题的,但关键是如何通过频率寻找到应该返回的数。 这时候我想到再加一个 map:freqToVal 来记录每个频率中出现的数字,为了符合题目返回最接近栈顶的元素的要求,freqToVal 阅读全文
posted @ 2023-04-27 18:43 Frodo1124 阅读(29) 评论(0) 推荐(0) 编辑
摘要:题目链接 1438. 绝对差不超过限制的最长连续子数组 思路 本题一看就是一个要用到滑动窗口的题目,难点在于如何快速求窗口中的最大值和最小值。幸好 Java 中有 TreeMap 这个数据结构,它在构成 map 映射的同时,还能够保证其中的元素有序,这样就能很方便求得窗口中的最大值和最小值了。 代码 阅读全文
posted @ 2023-04-27 10:44 Frodo1124 阅读(49) 评论(0) 推荐(0) 编辑
摘要:题目链接 767. 重构字符串 思路 先用哈希表统计出出现次数最多的字符,如果这个次数大于一半,说明这个字符总会挨在一起,直接返回 ""。 如果不超过一半,则先把字符填在偶数位置(先填出现次数最多的字符),偶数位置填满了再填奇数位置。 代码 class Solution { public Strin 阅读全文
posted @ 2023-04-26 16:46 Frodo1124 阅读(19) 评论(0) 推荐(0) 编辑
摘要:题目链接 740. 删除并获得点数 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums 以前 i 个元素组成(即 nums[i - 1])的状态;dp[i][j] 分别表示以 阅读全文
posted @ 2023-04-26 14:44 Frodo1124 阅读(48) 评论(0) 推荐(0) 编辑
摘要:题目链接 213. 打家劫舍 II 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums 以前 i 个元素组成(即 nums[i - 1])的状态;dp[i][j] 分别表示以 阅读全文
posted @ 2023-04-25 15:53 Frodo1124 阅读(30) 评论(0) 推荐(0) 编辑
摘要:题目链接 198. 打家劫舍 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums 以前 i 个元素组成(即 nums[i - 1])的状态;dp[i][j] 分别表示以 num 阅读全文
posted @ 2023-04-25 10:48 Frodo1124 阅读(28) 评论(0) 推荐(0) 编辑
摘要:题目链接 1277. 统计全为 1 的正方形子矩阵 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums 以前 i 个元素组成(即 nums[i - 1])的状态;dp[i][j 阅读全文
posted @ 2023-04-25 10:18 Frodo1124 阅读(40) 评论(0) 推荐(0) 编辑
摘要:题目链接 221. 最大正方形 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums 以前 i 个元素组成(即 nums[i - 1])的状态;dp[i][j] 分别表示以 nu 阅读全文
posted @ 2023-04-24 16:50 Frodo1124 阅读(78) 评论(0) 推荐(0) 编辑
摘要:题目链接 91. 解码方法 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums 以前 i 个元素组成(即 nums[i - 1])的状态;dp[i][j] 分别表示以 nums 阅读全文
posted @ 2023-04-23 09:19 Frodo1124 阅读(19) 评论(0) 推荐(0) 编辑
摘要:题目链接 1143. 最长公共子序列 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums 以前 i 个元素组成(即 nums[i - 1])的状态;dp[i][j] 分别表示以 阅读全文
posted @ 2023-04-22 16:42 Frodo1124 阅读(14) 评论(0) 推荐(0) 编辑
摘要:题目链接 718. 最长重复子数组 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums 以第 i 个元素组成(即 nums[i - 1])的状态;dp[i][j] 分别表示以 阅读全文
posted @ 2023-04-22 09:23 Frodo1124 阅读(33) 评论(0) 推荐(0) 编辑
摘要:题目链接 312. 戳气球 思路 参考动态规划套路解决戳气球问题 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[ 阅读全文
posted @ 2023-04-21 10:37 Frodo1124 阅读(28) 评论(0) 推荐(0) 编辑
摘要:题目链接 132. 分割回文串 II 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[ 阅读全文
posted @ 2023-04-20 10:15 Frodo1124 阅读(24) 评论(0) 推荐(0) 编辑
摘要:题目链接 378. 有序矩阵中第 K 小的元素 思路 因为矩阵的每行和每列元素均按升序排序,所以我们可以打破传统思路 代码 class Solution { public int kthSmallest(int[][] matrix, int k) { PriorityQueue<int[]> pr 阅读全文
posted @ 2023-04-19 11:26 Frodo1124 阅读(20) 评论(0) 推荐(0) 编辑
摘要:题目链接 97. 交错字符串 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[j] 为 阅读全文
posted @ 2023-04-19 10:43 Frodo1124 阅读(47) 评论(0) 推荐(0) 编辑
摘要:背包问题 参考:希望用一种规律搞定背包问题 分类 排列组合问题 dp[i]+=dp[inum[j]] 判断问题(true or false) dp[i]=dp[i]||dp[inum[j]] 最大最小问题 $$ dp[i] = min(dp[i], d 阅读全文
posted @ 2023-04-19 09:49 Frodo1124 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目链接 377. 组合总和 Ⅳ 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[j] 阅读全文
posted @ 2023-04-19 09:21 Frodo1124 阅读(22) 评论(0) 推荐(0) 编辑
摘要:题目链接 72. 编辑距离 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[j] 为结 阅读全文
posted @ 2023-04-18 16:57 Frodo1124 阅读(26) 评论(0) 推荐(0) 编辑
摘要:题目链接 139. 单词拆分 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[j] 为 阅读全文
posted @ 2023-04-18 16:12 Frodo1124 阅读(39) 评论(0) 推荐(0) 编辑
摘要:题目链接 304. 二维区域和检索 - 矩阵不可变 思路 显然,一个矩阵的元素和可以拆分成每一行相加。 那一个矩阵的每一行不就是一个个一维数组,一维数组怎么快速求子数组的和?前缀和! 所以这道题很明显就是对输入矩阵建立一个前缀和矩阵,然后求每一行的前缀和差值便能就得子矩阵的和。 代码 class N 阅读全文
posted @ 2023-04-18 10:56 Frodo1124 阅读(22) 评论(0) 推荐(0) 编辑
摘要:题目链接 523. 连续的子数组和 思路 参考宫水三叶大佬题解 一开始以为和 Leetcode 53 Maximum Subarray 思路差不多,都是求子数组的值。但是后来发现在53题中并没有求出每个子数组的和,只是在贪心的情况下求出了可能的最大和 假设一段子数组的和是 subSum,那么如果要使 阅读全文
posted @ 2023-04-16 10:44 Frodo1124 阅读(40) 评论(0) 推荐(0) 编辑
摘要:题目链接 1031. 两个非重叠子数组的最大和 思路 // TODO 先见注释 代码 class Solution { public int maxSumTwoNoOverlap(int[] nums, int firstLen, int secondLen) { // 求一个前缀和 for(int 阅读全文
posted @ 2023-04-14 10:21 Frodo1124 阅读(23) 评论(0) 推荐(0) 编辑
摘要:题目链接 1423. 可获得的最大点数 思路 通过逆向思维来考虑,因为我们是从两头拿数字,所以最终剩下的数字一定是位于中间的连续子数组。 因为数组总和不变,所以求两边数字加和的最大值,实际上就是求中间数字加和的最小值 代码 class Solution { public int maxScore(i 阅读全文
posted @ 2023-04-14 09:51 Frodo1124 阅读(35) 评论(0) 推荐(0) 编辑
摘要:题目链接 53. 最大子数组和 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 在数组的动态规划问题中,一般 dp[i] 都是表示以 nums[i] 为结尾的状态;dp[i][j] 分别表示 以 nums1[i] 和 nums2[j] 阅读全文
posted @ 2023-04-14 09:06 Frodo1124 阅读(48) 评论(0) 推荐(0) 编辑
摘要:题目链接 218. 天际线问题 思路 参考宫水三叶大佬题解 求最大值 观察上面的图可以发现,我们需要求的其实就只是一个一个小矩形,做的其实相当于一个矩阵分割。并且求得还得是每一段的最大高度。 那么在不断变化的各种数值之间求最大数值,很容易想到使用优先队列,这样在动态的过程中始终能找到最大值。 接下来 阅读全文
posted @ 2023-04-13 10:32 Frodo1124 阅读(59) 评论(0) 推荐(0) 编辑
摘要:题目链接 45. 跳跃游戏 II 思路 如果某一个作为 起跳点 的格子可以跳跃的距离是 3,那么表示后面 3 个格子都可以作为 起跳点。 11. 可以对每一个能作为 起跳点 的格子都尝试跳一次,把 能跳到最远的距离 不断更新。 如果从这个 起跳点 起跳叫做第 1 次 跳跃,那么从后面 3 个格子起跳 阅读全文
posted @ 2023-04-03 10:48 Frodo1124 阅读(25) 评论(0) 推荐(0) 编辑
摘要:题目链接 55. 跳跃游戏 思路 如果某一个作为 起跳点 的格子可以跳跃的距离是 3,那么表示后面 3 个格子都可以作为 起跳点。可以对每一个能作为 起跳点 的格子都尝试跳一次,把能跳到最远的距离 不断更新。如果可以一直跳到最后,就成功了。 代码 class Solution { public bo 阅读全文
posted @ 2023-04-03 10:12 Frodo1124 阅读(22) 评论(0) 推荐(0) 编辑
摘要:题目链接 256. 粉刷房子 假如有一排房子,共 n 个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。 当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。每个房子粉刷成不同颜色的花费是以一个 n 阅读全文
posted @ 2023-04-03 09:47 Frodo1124 阅读(52) 评论(0) 推荐(0) 编辑
摘要:题目链接 64. 最小路径和 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 表示状态 假设到了右下角,考虑一下我们要存储的信息 走到最后坐标的最小步数 当前坐标的信息,用来判断是否走到了右下角 很容易联想到使用二维数组 dp[i][j 阅读全文
posted @ 2023-04-02 13:54 Frodo1124 阅读(22) 评论(0) 推荐(0) 编辑
摘要:题目链接 70. 爬楼梯 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 表示状态 假设走到了最后一层台阶,考虑一下我们要存储的信息: 走到这最后一层台阶的方法数 当前台阶数,用于判断是否走到了最后一层台阶 这时候很容易想到使用一维数组 阅读全文
posted @ 2023-04-02 13:08 Frodo1124 阅读(30) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示