欢乐的跳——快看,远处的学妹正向你慢慢走来

Posted Fearless→

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了欢乐的跳——快看,远处的学妹正向你慢慢走来相关的知识,希望对你有一定的参考价值。

解题前言(!!!重点!!!)

本次题解是对上一条博客题解中的算法进行相应的优化。
这里依旧希望各位“工程师”在评论区积极讨论,大家一起学习。本人在此表示热烈欢迎!!!
在这里插入图片描述

题目描述

一个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");
	}
}

在这里插入图片描述

结束语

最后还是希望大家在评论区积极讨论呀!
好兄弟好兄弟
<随缘学习>

以上是关于欢乐的跳——快看,远处的学妹正向你慢慢走来的主要内容,如果未能解决你的问题,请参考以下文章

SaaS创业者注意了:私募股权正向你走来

学妹开心的跳起来原来MySQL中的select,和Python中的print,还可以这样对比/

欢乐的跳

520到来!教你如何用代码向心仪的学妹表白,获取他的芳心!

洛谷——P1152 欢乐的跳

有个大学编程专业的学妹问我:我这个zip文件密码破解运行起来为什么内存爆了?