摘要:
✅做题思路or感想 暴力解法 “连续”,“递增”要素过多,一眼暴力 class Solution { public: int findLengthOfLCIS(vector<int>& nums) { int result = 1, sum = 1; for (int i = 1; i < nums 阅读全文
摘要:
✅做题思路or感想 这种“最长递增子序列”是经典的动态规划的题,虽然我在看到的第一瞬间并没有反应过来用dp,可惜 dp数组含义 dp[i],以nums[i]结尾的最大递增子序列的长度 推导公式 当 nums[i] > nums[j] 时: nums[i]可以接在nums[j] 之后(此题要求严格递增 阅读全文
摘要:
✅做题思路or感想 一道股票问题,特点是在卖出的时候要考虑税收的因素 买入一次卖出一次算一次交易,所以在卖出那里扣税收就可以了 dp数组含义 dp[i][0]是第i天持有股票时能获得的最大利润 dp[i][1]是第i天没有股票时能获得的最大利润 推导公式 dp[i][0] = max(dp[i - 阅读全文
摘要:
✅做题思路or感想 这一题不能用状态的方法去思考,会很绕。只关注卖出的那一天就好了 这里的处理是把冷冻期放进了dp[i][0]中一并考虑了 dp数组含义 0.不持股且当天没卖出,定义其最大收益dp[i][0]; 1.持股,定义其最大收益dp[i][1]; 2.不持股且当天卖出了,定义其最大收益dp[ 阅读全文
摘要:
✅做题思路or感想 股票问题 + 找规律,找到规律后就很简单了 顺便一说,一次交易包括一次卖出和买入!!!故这里总的交易次数是2 * k dp数组含义 dp[i][j]:第i天第j次交易持有股票的状态 dp[i][j + 1]:第i天第j次交易没有股票的状态 推导公式 不如来看一下k = 2时的递推 阅读全文
摘要:
✅做题思路or感想 考验的是对二维dp数组的理解和运用,一维是天数,二维是状态,了解了就很好做了 dp数组含义 dp[i][0]:第一次交易持有股票能获得的最大利润 dp[i][1]:第一次交易没有股票能获得的最大利润 dp[i][2]:第二次交易持有股票能获得的最大利润 dp[i][3]:第二次交 阅读全文
摘要:
✅做题思路or感想 经典股票问题,这一题的特点是:股票只能交易多次 而这和股票可以单次交易的区别在于推导公式 dp数组含义 dp[i][0]:第i 天持有股票的最大利润 dp[i][1]:第i天没有股票的最大利润 推导公式 持有股票的来源:可以前一天就有股票了,也可能是今天才买股票,二者取最大利润的 阅读全文
摘要:
✅做题思路or感想 经典股票问题,这一题的特点是:股票只能交易一次 而这和股票可以重复次交易的区别在于推导公式 dp数组含义 dp[i][0]:第i 天持有股票的最大利润 dp[i][1]:第i天没有股票的最大利润 推导公式 持有股票的来源:可以前一天就有股票了,也可能是今天才买股票,二者取最大利润 阅读全文
摘要:
✅做题思路or感想 看得出来是动态规划,但想了半天解不出来。。。。 可以转化为背包问题中的是否能把背包装满的问题,因为词典里的词可以重复用,所以这是一个完全背包 dp数组含义 dp[i]表示长度为i的字符串能不能被被分解(其实就是容量为i的背包能否被装满) 💡递推公式 设wordSize是遍历到的 阅读全文