122. Best Time to Buy and Sell Stock II

这道题也比较简单。将股票的价格变化想象为一条曲线,当曲线上升时就可以获利。找到所有可以获利的区间,把利润加起来就可以了。

public class Solution {
    public int maxProfit(int[] prices) {
        if (prices == null || prices.length <= 1)
            return 0;

        int lastValue = prices[0]; // 上一个值
        int maxProfit = 0;
        int lowValue = prices[0]; // 目前的最小值

        for (int i = 1; i < prices.length; i++) {
            int value = prices[i];
            // 如果开始下降了,就要加上前段的收益
            if (value < lastValue) {
                maxProfit += lastValue - lowValue;  // 其实这里可能有些多余的操作,可能一直是在加0
                lowValue = value;
            }
            lastValue = value;
        }

        // 注意这里,最后一个点有可能是上升的终点
        if (lastValue > lowValue)
            maxProfit += lastValue - lowValue;

        return maxProfit;
    }
}

results matching ""

    No results matching ""