这个题目其实和那个左边减去右边的差最大那个题目类似,只是这里要多加几个判断,代码如下:
// maxAndmin.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <cmath> using namespace std; int getMax(int a[],int len) { int max=a[0]; int maxDiff=0; int diff=a[0]-a[1]; for (int i=2;i<len;i++) { if (a[i-1]>max) { max=a[i-1]; } diff=max-a[i]; if (diff>maxDiff) { maxDiff=diff; } } return maxDiff; } int getMin(int a[],int len) { int min=a[0]; int diff=a[0]-a[1]; if(diff<0) { diff=-diff; } int minDiff=diff; for (int i=2;i<len;i++) { if (a[i-1]<abs(min)) { min=a[i-1]; } diff=min-a[i]; if (diff<0) { diff=-diff; } if (diff<minDiff) { minDiff=diff; } } return minDiff; } int _tmain(int argc, _TCHAR* argv[]) { int a[]={-5,-1,11,6,-2}; int len=sizeof(a)/sizeof(int); cout<<getMin(a,len); system("pause"); return 0; }