给一个长度为n的整数列A0 A1 A2 A3 A4,找出两个整数Ai和Aj,使得Ai Aj 尽量大。
【输入格式】
输入第一行为数据数组T(T<=20).每组数据的第一行为整数的个数n(2<=n<=100 000);以下n行为一个绝对值不超过150 000的整数。
【输出格式】
对于每组数据,输出Ai Aj的最大值
【分析】
我们可不可以A数组实现边读边写计数呢,这样可以附加空间O()n降低到O(1 );
#inclde<cstdio>
int main()
{
int T;
int Max=0;
int ans=0;
int xi;
int yi;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int a;
scanf("%d",&a);
if(i>1)
{
if(Max-a>ans)//更新当前差值最大
{
ans=Max-a;
xi=Max;//保留此时的相加项的值
yi=a;
}
if(a>Max)//更新前面i项的最大值
{
Max=a;
}
}
else
Max=a;//用于存储第一个数值
}
printf("ans: %d xi: %d yi:%d",ans,xi,yi);
}
return 0;
}