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

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

在这里插入图片描述

Java题解

public class HappyJump {

	public static void main(String[] args) {
		// 人工创建初始数组arr1
		int[] arr1 = array();
		// 求数组中相邻元素差的绝对值的数组arr2
		int[] arr2 = chaDeJueDuiZhi(arr1);
		// 将arr2升序排序,为与arr3对比做准备
		java.util.Arrays.sort(arr2);
		// 创建对比升序梯度数组arr3,与arr2对比(懂得都懂)
		int[] arr3 = gradientArray(arr2.length);
		// 对比结果
		String result = arrayContrast(arr2, arr3);
		// 输出结果
		System.out.println(result);
	}
	
	// 人工创建一维整型数组
	public static int[] array() {
		java.util.Scanner reader = new java.util.Scanner(System.in);
		// 数组长度n
		int n = reader.nextInt();
		// 控制n输入的范围(1 <= n <= 1000)
		if(n < 1 || n > 1000)
			System.exit(0);
		// 手动输入数组元素
		int[] arr = new int[n];
		for(int i = 0; i < arr.length; i ++) {
			arr[i] = reader.nextInt();
			// 控制arr[i]输入的范围(-10^8 <= arr[i] <= 10^8)
			if(arr[i] < -100000000 || arr[i] > 100000000)
				System.exit(0);
		}
		return arr;
	}
	
	// 求数组相邻元素差的绝对值的数组
	public static int[] chaDeJueDuiZhi(int[] array) {
		int[] arr = new int[array.length - 1];
		for(int i = 0; i < array.length - 1; i ++) {
			if(array[i] > array[i + 1])
				arr[i] = array[i] - array[i + 1];
			else
				arr[i] = array[i + 1] - array[i];
		}
		return arr;
	}
	
	// 创建升序梯度一维整型数组
	public static int[] gradientArray(int x) {
		int[] arr = new int[x];
		for(int i = 0; i < arr.length; i ++) {
			arr[i] = i + 1;
		}
		return arr;
	}
	
	// 数组元素对比,前提保证数组长度相同
	public static String arrayContrast(int[] array1, int[] array2) {
		// 保证数组长度相同
		if(array1.length != array2.length)
			return "数组对比时,两数组长度不同,错误!!!";
		for(int i = 0; i < array1.length; i ++) {
			if(array1[i] != array2[i])
				return "Not jolly";
		}
		return "Jolly";
	}

}

在这里插入图片描述

结束语

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

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

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

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

欢乐的跳

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

洛谷——P1152 欢乐的跳

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