给定一个数组 prices
,它的第 i
个元素 prices[i]
表示一支给定股票第 i
天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0
。
两种方式(暴力+动态规划)
class Solution {
public:
int maxProfit(vector<int>& prices) {
//纯暴力,会超时
// int ans = 0;
// for(int i = 0 ; i < prices.size(); i ++ )
// {
// for(int j = i + 1; j < prices.size(); j ++ )
// {
// if(ans < prices[j] - prices[i])
// ans = prices[j] - prices[i];
// }
// }
// return ans;
//动态规划
int ans = 0,minn = 1e5 + 10;//ans:最大利润,minn:今天及之前的最小价格
for(auto i:prices)
{
ans = max(ans,i - minn);//i- minn:今日价格减去最小股票价格
minn = min(i,minn);//得到最小股票价格
}
return ans;
}
};