解题思路
首先我们需要计算的是最大的利润,这个目标很明确。我们需要注意的是,这里股票只能先买,然后才能卖,所以如果我们扫描一遍只找最大最小值,可能最大值就会在最小值的前面,这个时候就错了。其实这里我们只需要保存最小值就行了,然后每次都计算一次利润,然后比对一下,如果发现有更小的价格,则更新最小价格。
代码
class Solution {
public:
int maxProfit(vector<int>& prices) {
int profit = 0, min_ind = 0;
for(int i = 1; i < prices.size(); i++) {
if(prices[i] > prices[min_ind]) profit = max(profit, prices[i] - prices[min_ind]);
if(prices[i] < prices[min_ind]) min_ind = i;
}
return profit;
}
};
版权属于:江筱雨
本文链接:https://www.yuisblog.com/archives/139/
本站未注明转载的文章均为原创,并采用
CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!