附上代码:
1 class Solution {
2 public:
3 int maxProfit(vector<int> &prices) {
4 unsigned int len = prices.size();
5 if (len == 0) return 0;
6 // ans: holds the total profit that has been earned
7 int ans = 0;
8 for (int i = 0; i < len; ) {
9 // buy: holds price of the ith day where
10 // i is the maximum index satisfing
11 // prices[i-1] > prices[i] and prices[i] <= prices[i+1]
12 int buy = prices[i++];
13 while (i < len && prices[i] < buy) {
14 buy = prices[i++];
15 }
16 if (i >= len) return ans;
17 // sell: holds price of the ith day where
18 // i is the maximum index satisfing
19 // prices[i-1] < prices[i] and prices[i] >= prices[i+1]
20 int sell = prices[i++];
21 while (i < len && prices[i] > sell) {
22 sell = prices[i++];
23 }
24 ans += (sell - buy);
25 }
26
27 return ans;
28 }
29 };