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

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏