int maxProfit(int* prices, int pricesSize){
int len = pricesSize;
int dp[2][2];
dp[0][0] = -prices[0];
dp[0][1] = 0;
for (int i = 1; i < len; i++)
{
dp[i%2][0] = fmax(dp[(i-1)%2][0], -prices[i]);
dp[i%2][1] = fmax(dp[(i-1)%2][1], prices[i] + dp[(i-1)%2][0]);
}
return dp[(len-1)%2][1];
}
贪心
int maxProfit(int* prices, int pricesSize){
int result = 0;
for (int i=1; i<pricesSize; i++)
{
if (prices[i] > prices[i-1])
{
result += prices[i] - prices[i-1];
}
}
return result;
}
动态规划
int maxProfit(int* prices, int pricesSize){
int len = pricesSize;
int dp[2][2];
dp[0][0] = -prices[0];
dp[0][1] = 0;
for (int i = 1; i < len; i++)
{
dp[i%2][0] = fmax(dp[(i-1)%2][0], dp[(i-1)%2][1]-prices[i]);
dp[i%2][1] = fmax(dp[(i-1)%2][1], prices[i] + dp[(i-1)%2][0]);
}
return dp[(len-1)%2][1];
}