题目大意:给一个长度为n的整数序列A0,A1,A2.。。An-1,找出两个整数Ai和Aj(i<j),使得Ai-Aj尽量大
解题思路:用MAX记录最大的Ai,MIN记录最小的Aj
当num[i]大于MAX时,令MAX = Aj,MIN=INF
当num[i] <MIN时,MIN = num[i],令ans = min(ans,MAX-MIN)
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
#define INF 0x3f3f3f3f
#define maxn 100010
int num[maxn];
int main() {
int test, n, x;
scanf("%d", &test);
while(test--) {
scanf("%d",&n);
for(int i = 0; i < n; i++)
scanf("%d", &num[i]);
int ans = num[0] - num[1], MAX = num[0], MIN = num[1];
for(int i = 2; i < n; i++) {
if(num[i] > MAX) {
MAX = num[i];
MIN = INF;
continue;
}
if(num[i] < MIN) {
MIN = num[i];
ans = max(MAX-MIN,ans);
}
}
printf("%d\n",ans);
}
return 0;
}