获得最长的可整合子数组的长度

2024-06-21 22:08

本文主要是介绍获得最长的可整合子数组的长度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

import java.util.*;
//获得最长的可整合子数组的长度
public class GetMaxArrLen{//方法一:(对每个子数组排序得到是否是按照1递增判断)public static int GetMaxArrLen01(int[]arr){if(arr==null){return 0;}int len=0;  //返回的可整合子数组的长度LinkedList <Integer>subArr=new LinkedList<Integer>();for(int i=0;i<arr.length;i++){for(int j=i;j<arr.length;j++){  for(int k=i;k<=j;k++){subArr.add(arr[k]);}if(IsAddOne(subArr)){len=Math.max(len,j-i+1);}}//清除一个子数组的数据subArr.clear();}return len;}//判断是否按照1递增public static boolean IsAddOne(LinkedList subArr){int[]newArr=new int[subArr.size()];int i=0;while(subArr.size() != 0){newArr[i]=(int)subArr.removeFirst();i++;}Arrays.sort(newArr); //对子数组进行排序for(int j=0;j<newArr.length-1;j++){if(newArr[j]!=newArr[j+1]-1){return false;}}return true;}//方法二:(对每个子数组排序得到子数组个数是否为max-min+1判断)public static int GetMaxArrLen02(int[]arr){if(arr==null){return 0;}int len=0;  //返回的可整合子数组的长度for(int i=0;i<arr.length;i++){int max=Integer.MIN_VALUE;int min=Integer.MAX_VALUE;for(int j=i;j<arr.length;j++){// int max=arr[i];// int min=arr[i];// for(int k=i+1;k<=j;k++)// {// 	 max=Math.max(max,arr[k]);// 	 min=Math.min(min,arr[k]);// }max=Math.max(max,arr[j]);min=Math.min(min,arr[j]);if(max-min==j-i){len=Math.max(len,j-i+1);}}}return len; }public static void main(String[]args){//System.out.println("Hello");int[]arr={5,5,3,2,6,4,3};System.out.println(GetMaxArrLen01(arr));System.out.println(GetMaxArrLen02(arr));}
}


这篇关于获得最长的可整合子数组的长度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringBoot整合 Quartz实现定时推送实战指南

《SpringBoot整合Quartz实现定时推送实战指南》文章介绍了SpringBoot中使用Quartz动态定时任务和任务持久化实现多条不确定结束时间并提前N分钟推送的方案,本文结合实例代码给大... 目录前言一、Quartz 是什么?1、核心定位:解决什么问题?2、Quartz 核心组件二、使用步骤1

SpringBoot整合AOP及使用案例实战

《SpringBoot整合AOP及使用案例实战》本文详细介绍了SpringAOP中的切入点表达式,重点讲解了execution表达式的语法和用法,通过案例实战,展示了AOP的基本使用、结合自定义注解以... 目录一、 引入依赖二、切入点表达式详解三、案例实战1. AOP基本使用2. AOP结合自定义注解3.

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

SpringBoot+Vue3整合SSE实现实时消息推送功能

《SpringBoot+Vue3整合SSE实现实时消息推送功能》在日常开发中,我们经常需要实现实时消息推送的功能,这篇文章将基于SpringBoot和Vue3来简单实现一个入门级的例子,下面小编就和大... 目录前言先大概介绍下SSE后端实现(SpringBoot)前端实现(vue3)1. 数据类型定义2.

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

SpringBoot整合Apache Spark实现一个简单的数据分析功能

《SpringBoot整合ApacheSpark实现一个简单的数据分析功能》ApacheSpark是一个开源的大数据处理框架,它提供了丰富的功能和API,用于分布式数据处理、数据分析和机器学习等任务... 目录第一步、添加android依赖第二步、编写配置类第三步、编写控制类启动项目并测试总结ApacheS

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr