摘要 通过取模运算来模拟在数组中循环搜索元素,这比在数组后拼接一个相同数组更方便,空间复杂度更低。 “接雨水”和“柱状图中的最大矩形”,都可以看...
摘要 单调栈方法的时间复杂度是O(n),只需要一层循环遍历一次输入数组,代码更简洁,逻辑更巧妙。 栈内元素从栈顶到栈底递增(或非递减),找的是任...
摘要 今天的两道题目是区间 dp 的入门题目,以每一个区间作为一个状态来定义 dp 数组和递推公式。 子串(子字符串)要求元素在原序列(原字符串...
摘要 编辑距离问题中,插入一个字符和删除一个字符,对于使得两个字符串相等的作用是一样的,都是使得两个字符串更加接近,所以可以统一只使用“插入”或...
摘要 套用“最长公共子序列”的思路,LeetCode392 判断子序列可以转化为:求s和t的最长公共子序列的长度,并判断这个最长公共子序列的长度...
摘要 如果不要求子序列中的元素在原序列中连续,相比于要求“连续”,dp数组的定义和递推公式是不一样的。 如果要求“连续”,那dp数组定义为以具体...
摘要 如果答案在dp数组中的位置不是固定的,可以在dp数组的更新过程中记录可能的答案,简化代码,例如今天的三道题,都可以在每次更新dp数组后来记...
摘要 有些动态规划的题目的难点在于如何划分状态和这些状态之间如何进行转移,列出可能的状态以及转移到这些状态的可能,是定义dp数组及数组下标、推导...
摘要 只买卖一次股票,和不限制次数地买卖股票,只是在递推公式上有差别。而且,这两种情况都不需要记录完成买卖的次数。 指定了至多买k次股票,这就暗...