求数组中两个元素最大差值

一个整数数组a[n],在a[n]中找两个数字,使得下标大的数字减去下表小的数字所得的差值最大,即:
在a[n]中找 a[i] 和 a[j] ,使得 a[i] - a[j] 的值最大,并且 i > j 。 

寻求O(n)的解法

 1 #include<iostream>//max{d[i] - d[j]} 且 i > j
 2 #include<vector>
 3 using namespace std;
 4 int Find_max1(vector<int> &a)
 5 {
 6     int len=nums.size();
 7     if(len==0||len==1) return false;
 8     int minleft=a[0];
 9     int maxdiff=a[1]-a[0];
10     for(int i=2;i<len;i++){
11         if(a[i-1]<minleft) minleft=a[i-1];
12         if(a[i]-minleft>maxdiff) maxdiff=a[i]-minleft;
     return maxdiff;
13 } 14

  如果要求i<j的话:

#include <iostream>//max{d[i] - d[j]} 且 i<j
#include <vector>
using namespace std;
int Find_max2(vector<int> &a)
{
    int len=nums.size();
    if(len==0||len==1) return false;
    int maxleft=a[0];
    int maxdiff=a[0]-a[1];
    for(int i=2;i<len;i++){
        if(a[i-1]>maxleft) maxleft=a[i-1];
        if(maxleft-a[i]>maxdiff) maxdiff=maxleft-a[i];
    return maxdiff;
}
原文地址:https://www.cnblogs.com/wsw-seu/p/8399749.html