---
# System prepended metadata

title: Leetcode 122. Best Time to Buy and Sell Stock II
tags: [Leetcode(C++)]

---

# Leetcode 122. Best Time to Buy and Sell Stock II
###### tags: `Leetcode(C++)`

題目 : https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/submissions/ 。

想法 : 

    狀態轉移 : 今天買 = 上次賣完(手上無股票) or 不做事。
    狀態轉移 : 今天賣 = 上次買完(手上有股票) or 不做事。
    注意初始狀態 ! 持續更新，最後輸出最後一天賣完即為答案。

時間複雜度 : O(n)。

程式碼 :

```
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int l = prices.size(), prevb = -1 * prices[0], prevs = 0;
        
        for(int i=1 ; i<l ; i++){
            int curb = max(prevs - prices[i] , prevb);
            int curs = max(prevb + prices[i] , prevs);
            prevb = curb;
            prevs = curs;
        }
        
        return prevs;
    }
};
```