欢乐的跳——快看,远处的学妹正向你慢慢走来
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");
}
}
结束语
最后还是希望大家在评论区积极讨论呀!
好兄弟好兄弟
<随缘学习>
以上是关于欢乐的跳——快看,远处的学妹正向你慢慢走来的主要内容,如果未能解决你的问题,请参考以下文章