08 2024 档案
摘要:300. 最长递增子序列 动态规划的版本是挺好理解的,dp[i]代表了以第i个数字结尾的最长递增子序列的长度,dp[0]显然为1。dp如何更新呢? i > 0: dp[i] = 在i之前,最大的小于nums[i]的数nums[j] dp[i] = dp[j] + 1,所以就是需要找到比nums[i]
阅读全文
摘要:188. 买卖股票的最佳时机 IV 做完上一道题后再看就简单许多了。股票问题的重点就在于两点: 找到所有的状态 状态如何转移 对于本题,一共包含2*k种状态(第1,2...k次持有,第1,2...k次卖出)。状态间如何转移呢?见下图 class Solution { public int maxPr
阅读全文
摘要:动态规划解题步骤 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 121. 买卖股票的最佳时机 这道题虽然自己做出来了,但是做了后面的题再回头看它就有了不一样的理解。curMin更重要的代表了一种状态,代表遍历到当前时间时最低的股价。
阅读全文
摘要:携带研究材料(第六期模拟笔试) 这道题就是最标准的01背包问题,如果第一次见还是很难想出什么办法,用回溯(每个物品有选或不选两种状态,时间复杂度为$2^n$)暴力去做一定会超时。 import java.util.*; public class Main{ public static void ma
阅读全文
摘要:动态规划解题步骤 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 [62. 不同路径](https://leetcode.cn/problems/fibonacci-number/) 动态规划的解法还是很好理解的。按照解题步骤来。 确
阅读全文
摘要:动态规划解题步骤 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 509. 斐波那契数 显然dp[i]代表fib[i],fib[i] = fib[i-1] + fib[i-2],fib[0] = 0, fib[1] = 1,遍历从前往
阅读全文
摘要:56. 合并区间 区间这类问题,不是按照左端点排序就是按照右端点排序,在思考思路的时候,就从这两个方向去下手,然后再去想贪心,以及从左侧开始遍历还是右侧开始遍历。 class Solution { public int[][] merge(int[][] intervals) { if(interv
阅读全文
摘要:452. 用最少数量的箭引爆气球 自己写没写出来,不过找到篇很好的题解,贪心想不到就是想不到,没办法。本以为自己的思路也是贪心,但就是做不出来。 class Solution { public int findMinArrowShots(int[][] points) { boolean[] vis
阅读全文