歡樂的跳 and Java題解(算法plus)<随緣學習>
- 解題前言(!!!重點!!!)
- 題目描述
- 輸入格式
- 輸出格式
- 輸入輸出樣例
- 核心算法
- Java題解
- 結束語
解題前言(!!!重點!!!)
本次題解是對上一條部落格題解中的算法進行相應的優化。
這裡依舊希望各位“工程師”在評論區積極讨論,大家一起學習。本人在此表示熱烈歡迎!!!

題目描述
一個n個元素的整數數組,如果數組兩個連續元素之間差的絕對值包括了[1 , n - 1]之間的所有整數,則稱之符合“歡樂的跳”,如數組1 4 2 3符合“歡樂的跳”,因為差的絕對值分别為:3,2,1。
給定一個數組,你的任務是判斷該數組是否符合“歡樂的跳”。
輸入格式
每組測試資料第一行以一個整數n(1 ≤ n ≤ 1000)開始,接下來n個空格隔開的在[-10^8 , −10^8]之間的整數。
輸出格式
對于每組測試資料,輸出一行若該數組符合“歡樂的跳”則輸出"Jolly",否則輸出"Not jolly"。
輸入輸出樣例
輸入##1
4 1 4 2 3
輸出##1
Jolly
輸入##2
5 1 4 2 -1 6
輸出##2
Not jolly
核心算法
首先,邊做差的絕對值邊存入原數組中;
其次,将新存入的元素排序;
最後,利用for循環判斷排序元素與循環變量的關系。
Java題解
public class HappyJumpPlus {
public static void main(String[] args) {
java.util.Scanner reader = new java.util.Scanner(System.in);
int n = reader.nextInt();
if(n < 1 || n > 1000) // 控制n輸入的範圍(1 <= n <= 1000)
System.exit(0);
int[] arr = new int[n];
for(int i = 0; i < arr.length; i ++) {
arr[i] = reader.nextInt();
if(arr[i] < -100000000 || arr[i] > 100000000) // 控制arr[i]輸入的範圍(-10^8 <= arr[i] <= 10^8)
System.exit(0);
}
for(int i = 0; i < arr.length - 1; i ++) { //做差的絕對值存在原數組中
if(arr[i] > arr[i + 1])
arr[i] = arr[i] - arr[i + 1];
else
arr[i] = arr[i + 1] - arr[i];
}
java.util.Arrays.sort(arr, 0, arr.length - 1); // 給原數組中新存入差的絕對值排序
for(int i = 0; i < arr.length - 1; i ++) {
if(arr[i] != i + 1) { // 比較
System.out.println("Not jolly");
return;
}
}
System.out.println("Jolly");
}
}
結束語
最後還是希望大家在評論區積極讨論呀!
好兄弟好兄弟
<随緣學習>