给你一个整数数组 prices
,其中 prices[i]
表示某支股票第 i
天的价格。
在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
思路一:动态规划
int maxProfit(int* prices, int pricesSize){
int dp[pricesSize][2];
dp[0][0] = 0;
dp[0][1] = -prices[0];
for(int i = 1;i<pricesSize;i++){
dp[i][0] = fmax(dp[i-1][1]+prices[i],dp[i-1][0]);
dp[i][1] = fmax(dp[i-1][1],dp[i-1][0]-prices[i]);
}
return dp[pricesSize-1][0];
}
分析:
本题与上题相同,同样考虑前一天对当前天的影响,最后输出即可
总结:
本题考察动态规划的应用,对于该类股票问题均可考虑使用动态规划进行解答