知识点

贪心

思路

由于每天都可以进行交易,我们可以只要第二天比第一天的段,而舍弃下降的段。因此只需要枚举相邻的两段,当第二天大于第一天,则可以更新答案。

时间复杂度 O(n)

AC Code(C++)

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param prices int整型vector 
     * @return int整型
     */
    int max_profitv2(vector<int>& prices) {
        // 统计所有的上升段
        int n = prices.size();
        int res = 0;
        for (int i = 1; i < n; i ++) {
            if (prices[i] >= prices[i - 1]) res += prices[i] - prices[i - 1];
        }
        return res;
    }
};