题目描述
最近,小L遇到了一道难题,请你帮帮他。
给出n个数,请找出这个序列的任意两个不同的数第二小的差值。ai��和aj��的差值定义为∣ai−aj∣∣��−��∣,即两个数差的绝对值,其中i�和j�互不相同。(第二小即从小到大排序之后的第二个数字)
输入格式
第一行为一个正整数n(3≤n≤105)�(3≤�≤105),代表数组的长度。
接下来一行,共n�个整数ai(−109≤ai≤109)��(−109≤��≤109)。
输出格式
输出一个数字,表示这个序列的任意两个不同的数中第二小的差值。
样例1
样例输入
6
11 4 7 1 16 2
样例输出
2
样例2
样例输入
6
10 1 2 4 15 6
样例输出
2
样例3
样例输入
6
6 8 10 4 3 2
样例输出
1
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n],i,j;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<n-1;i++)
{
if(a[i]==a[i+1])
{
int c=0;
for(c=i;c<n-1;c++)
{
a[c]=a[c+1];
}
n--;
i--;
}
}
int c[100000]={0};
for(int i=0;i<n-1;i++)
{
c[i]=a[i+1]-a[i];
}
printf("%d",c[1]);
return 0;
}