网站怎么做百度百科,注册网站做网销,哪里可以免费下载ppt模板,镇江网站外包模板的#xff1a;
我的想法是#xff0c;这个题就是找最大差。两个递归是可以解决的#xff0c;时间复杂度是o(n^2)。但是题目要求时间复杂度是o(n)。
模板用了一个两行的dp数组#xff0c;在一次for循环中#xff0c;更新两行#xff0c;是亮点。 第一行记录利润。全…模板的
我的想法是这个题就是找最大差。两个递归是可以解决的时间复杂度是o(n^2)。但是题目要求时间复杂度是o(n)。
模板用了一个两行的dp数组在一次for循环中更新两行是亮点。 第一行记录利润。全大于等于0。 所以比较前一天的利润(dp[i-1][0])和假如今天卖的最大利润(今天的价格和历史最低价的差prices[i]dp[i-1][1]) 第二行记录截止到今天的历史最低价。全小于等于0。 所以比较前一天的历史最低价(dp[i-1][1])和今天的价格(-prices[i]) 感觉模板没有考虑n0的情况。
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可** * param prices int整型vector * return int整型*/int maxProfit(vectorint prices) {// write code hereint n prices.size();if(n 0)return 0;vectorvectorint dp(2, vectorint(n));dp[1][0] -prices[0]; //第一天的历史最低是它自己for(int i 1; i n; i){dp[0][i] max(dp[0][i-1], dp[1][i-1]prices[i]);dp[1][i] max(dp[1][i-1], -prices[i]);}return dp[0][n-1];}
};