怎么感觉前面几篇都很烦啊?
桶排+边读边做
先把大概说一下
读入用一个数组,判断用一个数组
边读边做,从第二个数开始判断,算出当前数与前一个数的差,然后数组中该下标的值++,最后全部扫一遍,如果有为0(没出现过)就不行,如果全部扫完一遍后都没问题就说明可以
#include<iostream>
#include<cmath>
using namespace std;
int n;
int a[100000007];
int f[100000007];//数据范围10^8,记得开多大,因为这个还RE了。。。
int main()
{
cin>>n;//正常读入
for(int i=1;i<=n;i++)//可以一边读一边处理
{
cin>>a[i];//读入这个数
if(i!=1)//因为第一个前面没有数
f[abs(a[i]-a[i-1])]++;//以这个与前一个差的绝对值为下表的数组值++
}
for(int i=1;i<=n-1;i++)
if(f[i]==0){cout<<"Not jolly";return 0;}
//只要值为0(说明没出现过)就不行,不标记的话记得写return 0
cout<<"Jolly";//运行完说明所有的值都出现过
return 0;
}