它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出。
int maxProfit(int* prices, int pricesSize)
{
int dp[pricesSize];//收益统计
dp[0] = 0;//初始
if(pricesSize < 2)
{
return 0;
}
//动态规划 逐步增加考虑的天数范围
int minn = prices[0];
for(int i = 1;i < pricesSize;)
{
//dp始终存储 考虑范围中最大的收益如7 1 5 3,dp[2] == dp[3] ==4
if(prices[i] - minn > dp[i - 1])
{
dp[i] = prices[i] - minn;//存在优于之前的情况
}
else
{
dp[i] = dp[i - 1];//范围扩大后不存在,更优秀的情况
}
if(minn > prices[i])
{
minn = prices[i];//更新买入的天(始终保持在可考虑范围中最小买入)
}
i ++;//继续扩大 考虑范围
}
return dp[pricesSize - 1];
}