题解 | 牛群售价预测

语言: C++

知识点: 贪心

分析: 若想要获得更高的利润,则必然是在卖出之前选择价格最低的那一天买入的。因此遍历价格过程中维护一个minIn变量表示之前的最低价格(买入价格)以及一个maxMoney变量表示当前可以获得的最高利润值(前者初始化为第一天的价格,后者依题意无获利情况时返回0因此初始化为0)。遍历过程中每天选择当前卖出获利与之前获利的较大值赋值给maxMoney,最终遍历结束后其值即为最大利润。

代码实现:

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param prices int整型vector 
     * @return int整型
     */
    int max_profit(vector<int>& prices) {
        int minIn = prices[0], maxMoney = 0;
        for(int i = 1; i < prices.size(); i++)
        {
            maxMoney = max(maxMoney, prices[i] - minIn); // 选择当前卖出获利和以往获利的最大值
            minIn = min(minIn, prices[i]); // 选择最小的买入价格
        }
        return maxMoney;
    }
};