思路:对于当前要处理的 A[i] 只需要保存A[0] 到 A[i] 之间的最大值,然后减去A[i+1]。
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 100010;
int A[maxn];
int n;
int work()
{
int ans = A[0] - A[1];
int maxv = A[0];
for(int i = 1; i < n; i++) {
ans = max(ans, maxv-A[i]);
if(A[i] > maxv) maxv = A[i];
}
return ans;
}
int main()
{
int T;
scanf("%d", &T);
while(T--) {
scanf("%d", &n);
for(int i = 0; i < n; i++) {
scanf("%d", &A[i]);
}
int ans = work();
printf("%d\n", ans);
}
return 0;
}