天天看點

歡樂的跳——快看,遠處的學妹正向你慢慢走來(二)解題前言(!!!重點!!!)題目描述輸入格式輸出格式輸入輸出樣例核心算法Java題解結束語

歡樂的跳 and Java題解(算法plus)<随緣學習>

  • 解題前言(!!!重點!!!)
  • 題目描述
  • 輸入格式
  • 輸出格式
  • 輸入輸出樣例
  • 核心算法
  • Java題解
  • 結束語

解題前言(!!!重點!!!)

本次題解是對上一條部落格題解中的算法進行相應的優化。

這裡依舊希望各位“工程師”在評論區積極讨論,大家一起學習。本人在此表示熱烈歡迎!!!

歡樂的跳——快看,遠處的學妹正向你慢慢走來(二)解題前言(!!!重點!!!)題目描述輸入格式輸出格式輸入輸出樣例核心算法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
           
歡樂的跳——快看,遠處的學妹正向你慢慢走來(二)解題前言(!!!重點!!!)題目描述輸入格式輸出格式輸入輸出樣例核心算法Java題解結束語

核心算法

首先,邊做差的絕對值邊存入原數組中;

其次,将新存入的元素排序;

最後,利用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");
	}
}
           
歡樂的跳——快看,遠處的學妹正向你慢慢走來(二)解題前言(!!!重點!!!)題目描述輸入格式輸出格式輸入輸出樣例核心算法Java題解結束語

結束語

最後還是希望大家在評論區積極讨論呀!

好兄弟好兄弟

<随緣學習>