(Java)欢乐的跳

news2024/11/18 7:29:35

欢乐的跳

    • 一、题目描述
    • 二、输入格式
    • 三、输出格式
    • 四、样例
      • (1)样例输入1
      • (2)样例输出1
      • (3)样例输入2
      • (4)样例输出2
    • 五、提示
    • 六、正确代码
    • 七、注意点以及思路
      • (1)注意点
      • (2)思路

一、题目描述

一个 n n n 个元素的整数数组,如果数组两个连续元素之间差的绝对值包括了 [ 1 , n − 1 ] [1,n-1] [1,n1] 之间的所有整数,则称之符合“欢乐的跳”,如数组 { 1 , 4 , 2 , 3 } \{1,4,2,3\} {1,4,2,3} 符合“欢乐的跳”,因为差的绝对值分别为: 3 , 2 , 1 3,2,1 3,2,1

给定一个数组,你的任务是判断该数组是否符合“欢乐的跳”。

二、输入格式

每组测试数据第一行以一个整数 n ( 1 ≤ n ≤ 1000 ) n(1 \le n \le 1000) n(1n1000) 开始,接下来 n n n 个空格隔开的在 [ − 1 0 8 , 1 0 8 ] [-10^8,10^8] [108,108] 之间的整数。

三、输出格式

对于每组测试数据,输出一行若该数组符合“欢乐的跳”则输出 Jolly,否则输出 Not jolly

四、样例

(1)样例输入1

4 1 4 2 3

(2)样例输出1

Jolly

(3)样例输入2

5 1 4 2 -1 6

(4)样例输出2

Not jolly

五、提示

1 ≤ n ≤ 1000 1 \le n \le 1000 1n1000

六、正确代码

import java.util.*;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] a = new int[n];
        int[] b = new int[n - 1];
        int[] c = new int[n - 1];
        for (int i = 0; i < n; i++) {
            a[i] = sc.nextInt();
        }
        for (int i = 0; i < n - 1; i++) {
            b[i]=Math.abs(a[i+1]-a[i]);
        }
        for (int j = 0; j < n - 1; j++) {
            for (int i = 1; i <= n - 1; i++) {
                if (b[j] == i){
                    c[i - 1] = 1;;
                    break;
                }
            }
        }
        for (int i = 0; i < n - 1; i++) {
            while (c[i] == 0){
                System.out.println("Not jolly");
                System.exit(0);
            }
        }
        System.out.println("Jolly");
    }
}

在这里插入图片描述

七、注意点以及思路

(1)注意点

这道题我一开始怎么都写不对,但又觉得自己非常正确,最后发现自己读错题了啊啊啊啊。我把题意理解成了数组中两个连续元素之差必须包含在这个数组之中,题目中的案例 {1,4,2,3}还满足了我以为的那个条件,然后就错的一发不可收拾了。。。。

从此明白了做题前要先认真读题啊

请添加图片描述

(2)思路

①首先认真读题,理解题意

  • 读入一个 n n n 个元素的整数数组,判断数组两个连续元素之间差的绝对值是否包括了 [ 1 , n − 1 ] [1,n-1] [1,n1] 之间的所有整数,如果包括了 [ 1 , n − 1 ] [1,n-1] [1,n1] 之间的所有整数就输出Jolly,否则就输出Not jolly。

②进行准备工作

  • 读入数组中的元素个数n和数组
  • 创建数组a,用来存储输入的数组元素,数组大小为n
  • 创建数组b,用来存储两个连续元素之间差的绝对值,数组大小为n-1
  • 创建数组c,用来做标记,判断是否数组两个连续元素之间差的绝对值包括了 [ 1 , n − 1 ] [1,n-1] [1,n1] 之间的所有整数
Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] a = new int[n];
        int[] b = new int[n - 1];
        int[] c = new int[n - 1];
        for (int i = 0; i < n; i++) {
            a[i] = sc.nextInt();
        }

③使用数组b存储两个连续元素之间差的绝对值,数组大小为n-1

for (int i = 0; i < n - 1; i++) {
            b[i]=Math.abs(a[i+1]-a[i]);
        }

此处要用到求绝对值的方法:Math.abs()

④对数组c进行赋值

  • 使用双重for循环:外层循环用来遍历两个连续元素之间差的绝对值,即数组b;内层循环遍历 [ 1 , n − 1 ] [1,n-1] [1,n1] 之间的所有整数
  • 循环内放入if语句进行判断:用j作为下标遍历b数组中的每一个元素,将其与 [ 1 , n − 1 ] [1,n-1] [1,n1] 中的元素每一个进行比较,若相等,则将c[i - 1]赋值为1,并退出内层循环。
  • 循环结束后,c数组中以 [ 1 , n − 1 ] [1,n-1] [1,n1] 中数字减一作为下标各个元素,若为0,则表示此元素未曾在数组b中出现过,即数组两个连续元素之间差的绝对值不是包括了 [ 1 , n − 1 ] [1,n-1] [1,n1] 之间的所有整数
  • 但若数组c中以 [ 1 , n − 1 ] [1,n-1] [1,n1] 中数字减一作为下标各个元素都为1,则表示 [ 1 , n − 1 ] [1,n-1] [1,n1] 所有的数字都在数组b中出现过,即数组两个连续元素之间差的绝对值包括了 [ 1 , n − 1 ] [1,n-1] [1,n1] 之间的所有整数
for (int j = 0; j < n - 1; j++) {
            for (int i = 1; i <= n - 1; i++) {
                if (b[j] == i){
                    c[i - 1] = 1;
                    break;
                }
            }
        }

⑤对数组c进行判断

  • 遍历c数组中的每一个元素
  • 只要遍历到c数组中有一个0,则代表数组两个连续元素之间差的绝对值不是包括了 [ 1 , n − 1 ] [1,n-1] [1,n1] 之间的所有整数,输出Not jolly并终止程序
  • 终止程序的代码是:System.exit(0);
  • 但若将数组c中没有一个0,就不会执行while语句中的内容,会退出循环并执行输出Jolly的语句
for (int i = 0; i < n - 1; i++) {
            while (c[i] == 0){
                System.out.println("Not jolly");
                System.exit(0);
            }
        }
        System.out.println("Jolly");

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【万字长文】从Linux零拷贝深入了解Linux I/O

前言 存储器是计算机的核心部件之一&#xff0c;在完全理想的状态下&#xff0c;存储器应该要同时具备以下三种特性&#xff1a; 速度足够快&#xff1a;存储器的存取速度应当快于 CPU 执行一条指令&#xff0c;这样 CPU 的效率才不会受限于存储器容量足够大&#xff1a;容量…

新闻发布系统的设计与实现/新闻管理系统

摘要 21世纪是信息的时代&#xff0c;是网络的时代&#xff0c;进入信息社会高速发展的时代&#xff0c;数字化革命给所有领域带来新的改变。传统的报纸杂志已经远远满足不了人们的需求&#xff0c;人们更加希望于能够在网上了解更多的新闻和信息&#xff0c;网页逐渐融入人们的…

实验二:数据查询实验

【实验目的】 熟练运用SQL语言实现数据查询&#xff0c;包括单表查询、分组查询、连接查询、嵌套查询、集合查询、oralce数据库常用函数等 【实验内容】 根据“数据导入”文档中的语句&#xff0c;将“费用明细表”和“科室字典”2张excel表内容导入数据库。然后拟定以下内容…

力扣刷题笔记day8(二维数组中的查找+旋转数组的最小数字+第一个只出现一次的字符)

文章目录二维数组中的查找题目思路代码旋转数组的最小数字题目思路代码第一个只出现一次的字符题目思路代码二维数组中的查找 在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右 非递减 的顺序排序&#xff0c;每一列都按照从上到下 非递减 的顺序排序。请完成一个高…

中级集成和高级信息系统项目管理怎么选?考哪个?

二者只有一个不同&#xff0c;高级需要考论文&#xff0c;如果有时间&#xff0c;有需求&#xff0c;就直接冲高级&#xff0c;一步到位&#xff1b; 下面一起看看两个科目的不同之处&#xff1a; 系统集成项目管理工程师 通过本考试的合格人员能够掌握系统集成项目管理的知识…

linux armhf ubuntu18.04搭建docker

1、开发环境 文件系统版本&#xff1a;ubuntu18.04 armhf 内核版本&#xff1a;linux4.1.15 docker版本&#xff1a;20.10.22 2、ubuntu上安装docker 1、卸载过往的版本 sudo apt-get remove docker docker-ce docker.io containerd runc2、重新更新、安装 sudo apt-get …

vue3+vite +element-plus+tailwindcss兼容低版本浏览器(uc)

部分问题 uc浏览器 rgb支持不全 如rgb(0 0 0 /30%) 这种写法不支持 tailwindcss v3 部分样式在低版本下也不支持 uc浏览器 对于 tailwindcss boxShadow 不支持 主要还是rgb原因 兼容 直接贴出代码 使用 tailwindcss 2.2.16 版本 v3低版本不支持 tailwindcss v2的 jit模式 和…

插值算法基本原理

插值&#xff1a;数据处理的手段 将缺失数据补全处理 线性内插 拉格朗日插值法 牛顿插值 拟合&#xff1a;预测&#xff0c;寻找规律的手段 是插值的外延 插值算法&#xff1a;使用在现有的数据极少&#xff0c;不足以支撑分析的进行&#xff0c;这时就需要使用一些数学方法…

植物激素基因高级分析来啦~

很多植物转录组学文章中&#xff0c;都有整合激素相关基因和表达数据的pathway图&#xff0c;直观地展示通路及其中重要基因的位置和功能。 植物激素&#xff08;Phytohormone&#xff09;亦称植物天然激素或植物内源激素&#xff0c;是指植物体内产生的一些微量而能调节&…

排序算法——快速排序

快排 ​ 确定一组数据 &#xff0c;即q数组 ​ 左端点为了&#xff0c;右端点为r ​ &#xff08;1&#xff09;确定分界点 ​ q[l] 或 q[ (l r) / 2] 或 q[r] 或任意一个数 作为分界点&#xff0c;分界点数为x ​ &#xff08;2&#xff09;调整区间 &#xff08;重点&a…

能源监控管理系统|瑜岿科技

瑜岿科技在产业转型升级过程中积极布局智能制造、物联网产业细分领域&#xff0c;拥抱多元化市场。立足市场、顺势而为&#xff0c;以创新理念驱动产业变革&#xff0c;以互联网、物联网思维重塑经营模式&#xff0c;成功打造“碳中和 碳达峰”背景下——能源监控管理系统。 智…

leetCode周赛-317

这里写目录标题题目一&#xff1a;6220.可被三整除的偶数的平均值题目二&#xff1a;6221. 最流行的视频创作者题目三&#xff1a;6222. 美丽整数的最小增量题目四&#xff1a;2458. 移除子树后的二叉树高度题目一&#xff1a;6220.可被三整除的偶数的平均值 AC代码&#xff1…

考研数学练习题-2022年12月23日

日期&#xff1a;2022年12月23日 数量&#xff1a;10

deck.gl 调研

0 结论 deck gl 是基于 WebGL 的数据可视化框架&#xff0c;可以集成在主流的地图框架&#xff08;arcgis&#xff0c;google maps&#xff0c;mapbox &#xff09;中使用&#xff0c; 也可以单独使用。 deck gl 通过layer进行数据可视化&#xff0c;支持多种展示效果&#xf…

什么是网络监控?OpManager 网络监控解决方案

什么是网络监控 在当今世界&#xff0c;术语网络监控在整个IT行业中很普遍。网络监控是一个关键的 IT 过程&#xff0c;其中所有网络组件&#xff08;如路由器、交换机、防火墙、服务器和虚拟机&#xff09;都受到故障和性能监控&#xff0c;并持续评估以维护和优化其可用性。…

基于防火墙双击热备三层网络规划_ensp综合实验

作者&#xff1a;BSXY_19计科_陈永跃BSXY_信息学院注&#xff1a;未经允许禁止转发任何内容基于防火墙双击热备三层网络规划_ensp综合实验前言及技术/资源下载说明&#xff08; **未经允许禁止转发任何内容** &#xff09;插曲&#xff1a;基于eNSP中大型校园/企业网络规划与设…

聊聊首次使用航顺HK32F030C8T6的体验

先说结论&#xff0c;项目基本上开发测试完成了,mcu运行正常。 这个项目是一个智能家居的项目&#xff0c;主板和副板都使用了HK32F030C8T6&#xff0c;这也是笔者第一次使用航顺的芯片。 关于这个芯片的资料&#xff0c;从官网只能下载到datasheet和user mannal的pdf文档&am…

代码随想录训练营第59天|LeetCode 503.下一个更大元素II、42. 接雨水

参考 代码随想录 题目一&#xff1a;LeetCode 503.下一个更大元素II 这个题在496. 下一个更大元素 I基础上数组变成了环&#xff0c;其实两次两次数组就可以了。代码如下&#xff1a; class Solution { public:vector<int> nextGreaterElements(vector<int>&am…

即时通讯实时视频聊天技术提供QoS保证的方法

随着WebRTC标准的逐步推广&#xff0c;实时音视频通讯技术受到越来越多公司和技术人员的关注。 对于交互式音视频应用而言&#xff0c;稳定、低延时、通话质量清晰可靠是其基本需求。在互联网环境下&#xff0c;音视频的通话质量与以下因素有关&#xff1a;一是编码码率、帧率和…

Opencv IplImage 和 Mat 使用介绍

1. IPIImage 使用介绍 IplImage是OpenCV中CxCore部分基础的数据结构&#xff0c;用来表示图像&#xff0c;其中Ipl是Intel Image Processing Library的简写。以下是IplImage的结构分析。参见:OpenCV中文网站 typedef struct _IplImage{int nSize; /* IplImage大小 *…