NO6---蓝桥杯JAVA---连号区间数

2023-11-10 10:30
文章标签 java 蓝桥 区间 连号 no6

本文主要是介绍NO6---蓝桥杯JAVA---连号区间数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

小明这些天一直在思考这样一个奇怪而有趣的问题:

在 1∼N的某个排列中有多少个连号区间呢?

这里所说的连号区间的定义是:

如果区间 [L,R]里的所有元素(即此排列的第 L个到第 R个元素)递增排序后能得到一个长度为 R−L+1的“连续”数列,则称这个区间连号区间。

当 N 很小的时候,小明可以很快地算出答案,但是当 N 变大的时候,问题就不是那么简单了,现在小明需要你的帮助。

输入格式

第一行是一个正整数 N,表示排列的规模。

第二行是 N个不同的数字 Pi,表示这 N 个数字的某一排列。

输出格式

输出一个整数,表示不同连号区间的数目。

数据范围

1≤N≤10000
1≤Pi≤N

输入样例1:
4
3 2 4 1
输出样例1:
7

本题主要考优化算法
其实正常思路 挨个在不同区间内比大小 找最值 与区间大小比较  但是它不能全部运行  在N=10003时出错
import java.util.Scanner;public class Main {public static Long N;public static int ans[]=new int[10003];public static Long count=(long) 0;public static void main(String[] args) {Scanner sc=new Scanner(System.in);N=sc.nextLong();sc.nextLine();for(int i=0;i<N;i++) {int t=sc.nextInt();ans[i]=t;}sc.close();for(int i=0;i<N;i++) {for(int j=i;j<N;j++) {int min=ans[i];int max=ans[i];for(int k=i+1;k<=j;k++) {if(ans[k]<min)min=ans[k];if(ans[k]>max)max=ans[k];}int ee=j-i;if(ee==(max-min))count++;}}System.out.println(count);}}
所以我上网找了一下JAVA的专属语句,以及可以把输入的数组变成字符串,减少消耗,方便分区
bufferedreader: 从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取 ;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;public class Main {static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));public static int arr[]=new int[10003];public static int res=0;public static void main(String[] args) throws Exception {int n = Integer.parseInt(br.readLine());String[] str = br.readLine().split(" ");for (int i=1; i<=n; i++) {arr[i] = Integer.parseInt(str[i-1]); //设定区间下标从1开始,所以i-1}for (int i=1; i<=n; i++) {int minv = Integer.MAX_VALUE;int maxv = Integer.MIN_VALUE;for (int j=i; j<=n; j++) {minv = Math.min(minv,arr[j]);maxv = Math.max(maxv,arr[j]);if (maxv - minv == j - i) {res ++;}}}System.out.println(res);}}

这篇关于NO6---蓝桥杯JAVA---连号区间数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/382069

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2