我的思路被昨天的动态规划所限制,修改昨天的代码,只要前n天赚的钱大于0,记录下来,然后再求剩余天数赚的最多的钱。
class Solution {
public int maxProfit(int[] prices) {
if (prices.length<=1) return 0;
int max = 0;
int all = 0;
int min = prices[0];
for (int i = 0; i < prices.length; i++) {
max = Math.max(prices[i]-min,max);
min = Math.min(prices[i], min);
if (max > 0) {
all += max;
min = prices[i];
max = 0;
}
}
return all;
}
}
看了评论以后一想,这种思想就是后一天比前一天大,就把差值记录下来,得到所赚的钱
class Solution {
public int maxProfit(int[] prices) {
int ans=0;
for(int i=1;i<=prices.length-1;i++)
{
if(prices[i]>prices[i-1])
{
ans+=prices[i]-prices[i-1];
}
}
return ans;
}
}