题目描述
在一个长度为n的数字序列中,如果相邻元素差的绝对值经过升序排序后正好是1~n-1,则认定该序列存在“有趣的跳跃”。例如:数字序列1、4、2、3的相邻数字差的绝对值分别为3、2、1,排序后是1、2、3,说明该序列存在着“有趣的跳跃”。现在给你一个序列,请你判断该序列是否存在“有趣的跳跃”。
输入格式:
第1行为一个整数n(不超过100000)。
接下来一行为n个不超过100000的整数。
输出格式:
若存在,输出“yes”,否则输出“no”。
样例输入:
4
1 4 2 3
样例输出:
yes
约定:
1<=n<=100000
提示:
我的代码
#include<bits/stdc++.h>
using namespace std;
long long n,ai[100005];
int main()
{
cin>>n;
cin>>ai[1];
for(int i=2;i<=n;i++)
{
cin>>ai[i];
ai[i-1]=abs(ai[i]-ai[i-1]);
}
for(int i=1;i<=n-2;i++)
{
int minn=i;
for(int j=i;j<=n;j++)
{
if(ai[minn]>ai[j])
{
minn=j;
}
}
swap(ai[i],ai[minn]);
}
for(int i=1;i<=n-1;i++)
{
if(ai[i]!=i)
{
cout<<"no";
return 0;
}
}
cout<<"yes";
return 0;
}
请各位大佬看看有什么问题