【leecode 2016. 增量元素之间的最大差值】

# 2016. 增量元素之间的最大差值

  • 我的思路:在数组中,寻找最大差值,即在局部最大差值中选最优,通过双指针i,j分别表示最大,最小值下标,这样通过更新双指针维护最小最大区间,遍历数组,每次遇到值比最小值还小时,最小最大区间从此处开始,遇到比最大值还大时,只需要更新最大值下标,这样只需要遍历一次即可找到最大差值。
  • 优化思路 :只维护最小值,遍历数组,当前值比最小值大,计算一次局部最大,当前值比最小值小,更新最小值,这样也遍历一遍,但思路更简洁。
//
class Solution {
public:
    int maximumDifference(vector<int>& nums) {
        int i=0,j=1;
        int rt=max(nums[j]-nums[i],-1);
        for(int t=1;t<nums.size();++t){
            if(nums[t]<nums[i]){
                i=t;
                if(t==nums.size()-1)break;
                j=t+1;
                rt=max(rt,nums[j]-nums[i]);
            }else if(nums[t]>=nums[j]){
                j=t;
                rt=max(rt,nums[j]-nums[i]);
            }
        }
        if(rt==0)return -1;
        return rt;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值