2020年11月8日

2020年11月8日学习记录
leetcode刷题记录
122. 买卖股票的最佳时机Ⅱ
**思路:**大体思路是找到最大的升序数组段组,对每一个最大升序数组段做差求和即为结果。
首先进行特殊情况的处理,如果数组的长度为1,则直接返回0。定义两个变量l和r分别指向数组的第一个元素和第二个元素,如果数组[l]大于数组[r],则同时将l和r向右移动一个单位,否则l不动,对r进行处理,利用循环和条件判断将r定位到此升序数组段的右端点。求出当前升序数组段的利润,再令l=r+1,r=r+1,重复上述步骤直到数组末尾。
代码:

class Solution {
    public int maxProfit(int[] prices) {
        if(prices.length==1)
        return 0;
        int sum=0,l=0,r=1;
        while(r<prices.length){
            if(prices[l]>prices[r]){
                l++; r++;
            }
            else{
                while(r<prices.length-1&&prices[r]<prices[r+1]) r++; 
                sum+=prices[r]-prices[l];
                l=r+1; r=r+1;
            }
        }
        return sum;
    }
}

执行用时:1 ms, 在所有 Java 提交中击败了99.54%的用户
内存消耗:38.4 MB, 在所有 Java 提交中击败了86.32%的用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值