122. 买卖股票的最佳时机 II(leetcode)
https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/
class Solution {
public:
int maxProfit(vector<int>& prices) {
vector<int> f(prices.size()+1,0);
int res=0;
for(int i=0;i<prices.size()-1;i++)
{
// 贪心:有增就加
if(prices[i]<prices[i+1])
{
res+=prices[i+1]-prices[i];
}
}
return res;
}
};
class Solution {
public int maxProfit(int[] prices) {
// f[i][j]表示在前i天中交易获得的最大利润,j=0意味着持有股票,j=1意味着不持有
// 以第i天是否持有股票划分子集
// f[i][0]=max(f[i-1][0],f[i-1][1]-prices[i])
// f[i][1]=max(f[i-1][1],f[i-1][0]+prices[i]);
// f[1][0]=-prices[0]
int[][] f=new int[prices.length+1][2];
f[1][0]=-prices[0];
for(int i=2;i<=prices.length;i++)
{
f[i][0]=Math.max(f[i-1][0],f[i-1][1]-prices[i-1]);
f[i][1]=Math.max(f[i-1][1],f[i-1][0]+prices[i-1]);
}
return f[prices.length][1];
}
}