面试题:数组后面的数减去前面的数的差最大

#include <cstdlib>
#include <iostream>
#include<vector>
#include <algorithm>



using namespace std;

//找出vector中后面元素和前面元素的最大差值, 
//遍历的N2复杂度的就不考虑了

//容器从两个元素开始,以此往后取第三个、第四个……元素 

//构造最大差值元素 
int max_diff(vector<int>& arr)
{
    if(arr.size()<=1)
    cout<<"容器长度必须是大于2"<<endl;
    
    //容器元素大于等于二个时 
    if(arr.size()>1)
    {
    //先定义最大差值,留着更新 
    int MAX=arr[1]-arr[0];
    //前两个元素的 最小值 
    int MIN=min(arr[0],arr[1]);
    //从第三个元素开始 
    for(vector<int>:: iterator it=arr.begin()+2;it!=arr.end();++it)
    {
                      //若这个元素和前面元素的差值比max大,更新max 
                    if(*it-MIN>MAX)
                   { MAX=*it-MIN;}
                    //若这个元素比前面容器的元素min小,更新min 
                    if(*it<MIN)
                    {MIN=*it;}
                    
    }
    cout<<"最大差值是:"<<MAX<<endl; 
    } 


}

int main(int argc, char *argv[])
{
    //建立容器,并加入数据 
    vector<int> arr;
    arr.push_back(1);
    arr.push_back(0);
    arr.push_back(12);
    arr.push_back(10);
    arr.push_back(6);
    arr.push_back(9);
    //输出容器中的元素 
    for(vector<int> ::iterator it=arr.begin();it!=arr.end();++it)
    {
                    cout<<*it<<" ";
                    if(it==arr.end()-1)
                    cout<<""<<endl;
                    }
    //调用函数 
    max_diff(arr);
    system("PAUSE");
    return EXIT_SUCCESS;
}

 

posted @ 2013-05-28 11:47  夜雨阑珊  阅读(879)  评论(0编辑  收藏  举报