面试题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