知识点

枚举

思路

我们枚举买入的日子,并找到后面的最大的值作为卖出的日子,正常可以二重循环。如果从后向前枚举,并维护最大值,可以做到O(n)的时间复杂度。

AC Code(C++)

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