leetcode 121买卖股票的最佳时机

这题用暴力法会超时。故直接考虑只遍历一次完成任务。使得时间复杂度为O(n)。

在遍历的过程中,维护历史最小价格和当前最大利润两个变量。(历史最小价格是目前为止可见的最小价格,并非全局最小)

每访问一个价格元素,先后更新最大利润和历史最小价格两个变量。(注意先后顺序)

提供代码如下

 1 class Solution {
 2 public:
 3     int maxProfit(vector<int>& prices) {
 4         int maxprofit=0;
 5         int minprice=INT_MAX;
 6         for (int i = 0; i < prices.size(); ++i) {
 7             maxprofit=max(maxprofit,prices[i]-minprice);
 8             minprice=min(minprice,prices[i]);
 9         }
10         return maxprofit ;
11     }
12 };

 

posted @ 2020-08-19 18:40  布羽  阅读(37)  评论(0)    收藏  举报