面试题:数组后面的数减去前面的数的差最大
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; }
相关文章推荐
- 给定一个整数数组,找出两个下标,要求后面下标所指的数减去前面下标所指的数之差最大
- 一个整数数组,用后面的元素减去前面的元素,求最大值。
- 算法面试题,在数组中找出这样的数,它比它前面的数都大,比它后面的数都小
- (动态规划DP)面试题:求数组中两个数的最大差值(只能下标大的减去下标小的)符合无后效性
- 6.数组元素最大差(只能后面减前面)【dp】
- 将数组中奇数都放前面,偶数都放在后面
- 微软面试题系列(三):求子数组的最大和
- 面试题31:连续子数组的最大和
- 剑指offerr面试题 调整数组顺序使奇数位于偶数前面
- 【C语言】【面试题】【笔试题】调整数组使奇数全部都位于偶数前面
- 剑指Offer_面试题14_调整数组顺序使奇数位于偶数前面
- 面试题:最大连续子数组和
- 经典笔试面试题-数组中最大的子数组之和
- 剑指offer面试题[31]-连续数组的最大和
- 面试题系列-整数数组长度为n,分为m份使各份的和相等,求最大的m
- 【剑指Offer】面试题14:调整数组顺序使基数位于偶数的前面
- 面试题14:调整数组顺序使奇数位于偶数的前面
- 面试题31:连续子数组的最大和
- 剑指offer-面试题 14:调整数组顺序使奇数位于偶数前面
- 面试题 14:调整数组顺序使奇数位于偶数前面