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 };

浙公网安备 33010602011771号