买卖股票的最佳时机 II
本题和买卖股票的最佳时机I很像,不同的是可以买卖多次,所以在考虑当天晚上有股票(昨天没有,今天买了)的情况时,
利润要考虑之前的利润,即dp[i-1][0]-prices[i],当只能买卖一次的时候,就是-prices[i],因为不需要考虑之前买卖的利润
class Solution {
public int maxProfit(int[] prices) {
int len=prices.length;
int [][]dp=new int[len][2];
dp[0][0]=0;//手里没有股票
dp[0][1]=-prices[0];//手里有股票,现在的最大净利润
for(int i=1;i<len;i++){
//当天晚上没有股票(昨天有,今天卖了,昨天就没有)
dp[i][0]=Math.max(dp[i-1][1]+prices[i],dp[i-1][0]);
//当天晚上有股票(昨天有,今天没卖,昨天没有,今天买了)
dp[i][1]=Math.max(dp[i-1][1],dp[i-1][0]-prices[i]);
}
return dp[len-1][0];
}
}