题目意思是,给你一个数组,看数组中的元素,是否可以通过排序构成严格递增序列
简而言之,就是,给你的数组中会不会有重复的元素。
我的思路是,先用sort()排序,之后遍历数组,如果有相同的元素,就跳出循环,并输出"NO";
#include<cstdio>
#include"algorithm"
using namespace std;
int t,n,a[1100000];
int main()
{
scanf("%d",&t);
while(t--)
{
int flag=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
for(int i=0;i<n-1;i++)//这里需要注意,i的结束条件是<n-1;
{
if(a[i]==a[i+1])
{
flag=1;
break;
}
}
if(flag==0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
我举个栗子,就是数组a[3]={1,2,3};
它是a[0]先与a[1]比,之后a[1]再与a[2]比,之后没了(下标是从零开始的),我想表达的意思是数组的最后一个元素,是与前一个元素比较的,所以也就不可能出现a[2]与a[3]比较,也就没有i=n-1这一说