题目:买卖股票的最佳时机 II

参考:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/solutions/12625/best-time-to-buy-and-sell-stock-ii-zhuan-hua-fa-ji/?envType=problem-list-v2&envId=91oI3WTD

对于连续上涨的情况,第一天买,最后一天卖,可以使得利润最大化,此时利润 profit 等于 p_n - p_1,等价于(p_n - p_n-1) + (p_n-1 - p_n-2) + …. + (p_2 - p_1),也就是说,可以将其分解为前一天买,下一天买,即每天都进行交易

对于连续下跌的情况,不进行任何交易(即利润为零)可以使得利润最大;

maxProfit()

 1int maxProfit(vector<int>& prices)
 2{
 3    int res = 0;
 4    // 只遍历一遍数组
 5    for(int i = 1; i < prices.size(); i++)
 6    {
 7        // 计算两天之间的利润
 8        int temp = prices[i] - prices[i - 1];
 9        // 只有当利润大于零时才记入总利润
10        if(0 < temp) res += temp;
11    }
12    return res;
13}

来源:语雀原笔记