buy数组是当天买入股票可以得到的最大值(花钱的最小值),sell数组是当天卖出股票可以得到的最大值,因为要有交易费,所以在卖出的时候需要扣掉交易费再去对比。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class Solution { public: int maxProfit(vector<int>& prices, int fee) { int size=(int)prices.size(); if(size<=1) return 0; int* buy=new int[size]; int* sell=new int[size]; buy[0]=-prices[0]; sell[0]=0; for(int i=1;i<size;i++){ buy[i]=max(buy[i-1],sell[i-1]-prices[i]); sell[i]=max(sell[i-1],buy[i-1]+prices[i]-fee); } return sell[size-1]; } };
|