您的位置:首页 > 职场人生

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

2013-05-28 11:47 721 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: