初级算法-02买卖股票的最佳时机II

87 阅读1分钟

题目

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。

在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。

返回 你能获得的 最大 利润 。

题解

可以把股票价格画成图,按照题目的要求我们需要找到:所有单调递增区间(单点递增区间的左极值购入股票,右极值出售股票)。把所有单调递增区间的差相加即可找到股票差价和即低买高卖的总利润。

image.png 像图中一样,1处购入,5处卖出;3处购买,6处卖出。

代码

class Solution {
    public int maxProfit(int[] prices) {
        int maxValue=0;
        for(int i=0;i<prices.length-1;i++){
            if(prices[i]<prices[i+1]){
                maxValue=maxValue+prices[i+1]-prices[i];
            }
        }
        return maxValue;
    }
}