面试题8:无序数组的最大差值

给定一个整数数组,a[1],a[2],...,a[n],每一个元素a[i]可以和它右边的(a[i+1],a[i+2],...,a[n])元素做差,求这个数组中最大的差值,例如a={0,3,9,1,3,5}这个数组最大的差值就是9-1=8;

class Solution {
public:
    int maxDiff(vector<int>& v){
        int n = v.size();
        if(n < 2) return 0;
        int* dp = new int[n];
        dp[n-1] = 0;
        int res = INT_MIN;
        for(int i=n-2;i>=0;i--){
            dp[i] = dp[i+1] < 0? v[i]-v[i+1]:v[i]-v[i+1]+dp[i+1];
            if(dp[i] > res){
                res = dp[i];
            }
        }
        return res;
    }
};

 

转载于:https://www.cnblogs.com/wxquare/p/6849575.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值