很简单,稍微观察一下就可以得出规律:每次买入之后在最高的时候卖出,

只需用low和high来记录买入、卖出的价格,遇到更高价格的时候更新high,否则卖出,

然后同时更新low和high。结束之后最后一次的收入=high - low不要忘了加进去!

 1 class Solution {
 2 public:
 3     int maxProfit(vector<int> &prices) {
 4         // Start typing your C/C++ solution below
 5         // DO NOT write int main() function
 6         if (prices.empty()) {
 7             return 0;
 8         }
 9         int low = prices[0];
10         int high = prices[0];
11         int sum = 0;
12         for (size_t i = 1; i < prices.size(); ++i) {
13             if (prices[i] > high) {
14                 high = prices[i];
15             }
16             else {
17                 sum += (high - low);
18                 low = prices[i];
19                 high = prices[i];
20             }
21         }
22         sum += (high - low);
23         return sum;
24     }
25 };

 

 

 

相关文章:

  • 2021-06-13
  • 2022-03-07
  • 2021-08-10
  • 2022-01-16
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-03
  • 2022-02-17
  • 2022-02-08
  • 2021-08-27
  • 2021-06-06
  • 2021-07-14
相关资源
相似解决方案