描述
一个长度为n(n>0)的序列中存在“有趣的跳跃”当前仅当相邻元素的差的绝对值经过排序后正好是从1到(n-1)。例如,1 4 2 3存在“有趣的跳跃”,因为差的绝对值分别为3,2,1。当然,任何只包含单个元素的序列一定存在“有趣的跳跃”。你需要写一个程序判定给定序列是否存在“有趣的跳跃”。
输入
一行,第一个数是n(0 < n < 3000),为序列长度,接下来有n个整数,依次为序列中各元素,各元素的绝对值均不超过1,000,000,000。
输出
一行,若该序列存在“有趣的跳跃”,输出"Jolly",否则输出"Not jolly"。
样例输入
4 1 4 2 3
样例输出
Jolly
解法:(利用Arrays.sort()排序)
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int a[]=new int [n];//a表示n个正数的一维数组
int b[]=new int [n-1];//排序后n-1个整数的一维数组
if(n==1) {
//任何只包含单个元素的序列一定存在“有趣的跳跃”
System.out.println("Jolly");
}
else {
for(int i=0;i<n;i++) {
a[i]=in.nextInt();//输入n个整数
}
for(int i=0;i<n;i++) {
for(i=0;i<n-1;i++) {
b[i]=Math.abs(a[i+1]-a[i]);
}
}
Arrays.sort(b);//对于b的一维数组进行排序
int j=1;
for(int i=0;i<n-1;i++,j++) {
if(b[i]!=j){
System.out.println("Not jolly");
break;//当不满足条件则用break终止循环
}
else {
if(i==n-2) {//当全部满足条件且循环到最后n-2时可以输出结果
System.out.println("Jolly");
}
}
}
}
}
}