给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。
设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):
卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
------------------------------------------------------------------------------
class Solution {
public int maxProfit(int[] prices) {
if(prices.length==0)return 0;
int f0=-prices[0];
int f1=0,f2=0;
for(int i=1;i<prices.length;i++){
int n0=Math.max(f0,f2-prices[i]);
int n1=f0+prices[i];
int n2=Math.max(f1,f2);
f0=n0;
f1=n1;
f2=n2;
}
return Math.max(f1,f2);
}
}
--------------------------------------------------------------------------------------------------------------
个人认为这题的几个点:第一天肯定要买进的所以收入是负的
第二是循环时f0持有股票的最大收益 f1冷冻期时所以前一天已经卖出 f2 非冷冻期最大收益