leetcode 122.买卖股票的最佳时机Ⅱ

与Ⅰ题的思路类似。用O(n)的时间遍历一遍把任务完成。

自我感觉比Ⅰ题要简单,考虑把数组元素表现成折线图形式(就像股票的价格波动图),只要把所有上升的差值求和就是答案。

代码如下

 1 class Solution {
 2 public:
 3     int maxProfit(vector<int>& prices) {
 4         if(prices.size()<2) return 0;
 5         int frontMin=prices[0],profitSum=0;
 6         for (int i = 1; i < prices.size(); ++i) {
 7             if(prices[i]>frontMin){
 8                 profitSum+=(prices[i]-frontMin);
 9                 frontMin=prices[i];
10             } else if (prices[i]<frontMin){
11                 frontMin=prices[i];
12             }
13         }
14         return profitSum;
15     }
16 };

 

posted @ 2020-08-19 21:00  布羽  阅读(68)  评论(0)    收藏  举报