算法总结之 需要排序的最短子数长度

【C++ 遗传算法】最短加法链问题 最短加法链 | C++ | 遗传算法 阅读详情

算法总结之 需要排序的最短子数长度

给定一个无序数组arr,求出需要排序的最短子数组长度

例如: arr=[1,5,3,4,2,6,7] 返回4,因为只有[5,3,4,2]需要排序

 

介绍一种 左右遍历方法   左右夹击 确认长度

首先从 右往左遍历 记录最小值 如果arr[i] >最小值  那么 最小值的位置应该在arr[i]的左边

然后从 左往右遍历  类似的思想不在累述

 

package TT;

public class Test17 {

   public static int getMinLength(int[] arr){
       
       if(arr==null || arr.length<2){
           return 0;
       }
       int min = arr[arr.length-1];
       int noMinIndex = -1;   //记录位置
       for(int i= arr.length-2; i !=-1; i--){
           if(arr[i]>min){
               noMinIndex=i;
           }else {
            min=Math.min(min,arr[i]);
        }
       }
       if(noMinIndex == -1){
           return 0;
       }   
       int max=arr[0];
       int noMaxIndex=-1;
       for(int i =1; i!=arr.length; i++){
             if(arr[i]<max){
                 noMaxIndex=i;
             }else {
                max=Math.max(max,arr[i]);
            }
       }
    return noMaxIndex - noMinIndex +1;          
   }
   public static void main(String[] args){
       int[] a = new int[7];
      a[0]=1;
      a[1]=5;
      a[2]=3;
      a[3]=4;
      a[4]=2;
      a[5]=6;
      a[6]=7;      
      int c = getMinLength(a);      
      System.out.println(c);
   }
   
}

测试结果:

 

public class Test7 {
   public  static int  getNeedSortLen(int[] arr){
       int right = arr.length-1;
       int left = 0;
           while (left<=right && arr[left]<arr[left+1]){
               left++;
           }
           while (right >=0 && arr[right]>arr[right-1]){
               right--;
           }
       return right-left+1;
   }
    public static void main(String[] args) {
         int[] arr = {1,5,3,4,2,6,};
        System.out.println( getNeedSortLen(arr));
    }
}

 

posted @ 2017-08-26 17:09 toov5 阅读( ...) 评论( ...) 编辑 收藏
(六)需要排序的最短子数组长度 【题目】给定一个无序数组arr,求出需要排序的最短子数组的长度 【举例】arr = [1,5,3,4,2,6,7];返回4,只有 [5,3,4,2]需要排序 【要求】时间复杂度O(n),空间复杂度O(1) 【解题思路】 (1)先从右往左遍历,初始化变量noMinIndex = -1,用minNum记录遍历过程中右侧出现过的数的最小值。假设当前数为arr[i],如果arr[i]>minNum,说明如果要整体有序,minNum值必须挪到arr[i]的左边。用noMinIndex记录最左边出现这种情况的位置 阅读详情

相关推荐

华为OD机试题,用 Java 解【最短木板长度】问题

最后,使用 max 函数找出 values 列表中的最大元素,并将其存储在 maxLength 变量中。最后,代码中的主函数读取 a 和 b 的值,并读取 values 列表的数据。参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。输出的唯一一行包含一个正整数,表示加长木板后,最短木板的长度最大可以为多少?给第 1 块木板长度增加 1,给第 3 块木板长度增加 2 后,此时剩余木料无论给哪块木板加长,最短木料的长度都为 4。,最短的木板的长度最大为 5。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 3364

程序员代码面试指南刷题--第八章.需要排序的最短子数组长度

题目描述 给定一个无序数组arr,求出需要排序的最短子数组的长度,对子数组排序后能使得整个数组有序,即为需要排序的数组。例如:arr=[1,5,3,4,2,6,7]返回4,因为只有[5,3,4,2]需要排序。 输入描述: 输入包含两行,第一行包括一个整数n,代表数组arr长度,第二行n个整数,代表数组arr。 输出描述: 输出一个整数,代表需要排序的最短子数组的长度。 示例1 输入 7 1 5 3 4 2 6 7 输出 4 解法一:从右往左找,从左往右找 import java.io.*; impo

我不是什么好人 409

最短木板长度问题

假如有 4 块木板,长度分别是[3, 4, 5, 6],木料长度是 3。先对木板排序后还是[3, 4, 5, 6],第一次把木料加给最短的木板,木板长度变为[4, 4, 5, 6],此时最短木板依然是第一块和第二块,第二次再给第一块加 1,变为[5, 4, 5, 6],这时第二块木板成了最短的,第三次就给第二块加 1,变为[5, 5, 5, 6],最后排序后最短木板长度就是 5。这块木料比较特殊,它可以被切割成任意数量的小块,并且能拼接到已有的木板上,从而增加木板的长度。, an],每个木板长度。

m0_62153576的博客 192

leetcode:581. 无序数组中需要排序的最短子数组长度

给定一个无序数组arr,求出需要排序的最短子数组的长度,对子数组排序后能使得整个数组有序,即为需要排序的数组。例如:arr=[1,5,3,4,2,6,7]返回4,因为只有[5,3,4,2]需要排序。

OceanStar的博客 591

Linux-VMware安装后没有虚拟网卡VMnet1和VMnet8(亲测有效,一步一步跟着绝对成功)

VMware-安装后没有虚拟网卡VMnet1和VMnet8 就这个破东西我昨天弄了一天,网上什么VMware卸载重装,用CCleaner清理注册表什么的操作我全用了,但是昨天就是弄不好,同样的操作我昨天试了无数遍一直觉得可能是 持续更新中… 文章参考学习地址:https://blog.youkuaiyun.com/qq_42445139/article/details/87872130 ...

杨的博客 8852

用 ABAP 驾驭 OAuth 2.0:从 Authorization Code 到 SAML Bearer 的全栈落地指南

ABAP平台OAuth 2.0客户端开发实践 本文为SAP开发者详细解析ABAP平台内置OAuth 2.0客户端的使用方法,涵盖四种授权流的最佳实践: 授权流选择: Authorization Code:适用于用户交互场景 SAML 2.0 Bearer:适合已有SAML体系的企业 Client Credentials:系统间通信 Password Credentials:过渡方案(不推荐) 配置流程: 通过SE80定义Client Profile 使用SOAUTH2_CLIENT/OA2C_CONFIG配

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 310

【每日一题】需要排序的最短子数组长度

“ 给定一个无序数组 arr,求出需要排序的最短子数组长度。 【例如】arr=【1,5,3,4,2,6,7】返回 4,因为只有【5,3,4,2】需要排序。 ” 分析: 子数组一定是连续的,所以整个数组可以分为三部分,只有中间一部分是乱序的。我们需要找到乱序部分的起始位置和终止位置。 首先我们分析一下这三部分的特征:因为有序1 和有序3 不需要排序,那么有序1排序后一定在最前边一段(数据最小的一段),同理有序3排在最后一段(数据最大的一段):有序1 < 乱序2 < 有序3 那么: 有序1 &lt

junxinsiwo的专栏 485

内存泄漏系列专题分析之二十一:高通相机CamX内存泄漏&内存占用分析--GPU内存拆解

通过上述debug方式,可以看到patch补丁可以顺利debug各种ION内存分布,可以通过它分析ION内存占用问题。同时我们还可以分析GPU内存泄漏问题,同样的方式可以看到所有的GPU内存分布,如果某个GPU内存持续增长,就极有可能内存泄漏,然后更具堆栈信息去分析代码,并解决GPU内存泄漏问题。!!

456

程序员代码面试指南 [需要排序的最短子数组长度,数组中出现次数超过一半的数字,数组中出现次数超过一半的数字]

需要排序的最短子数组长度 https://www.nowcoder.com/questionTerminal/fccb5d14b44b4b99b34839bdf20588e9?orderByHotValue=1&page=1&onlyReference=false 来源:牛客网 给定一个无序数组arr,求出需要排序的最短子数组的长度,对子数组排序后能使得整个数组有序,即为需要排序的...

qq_43185543的博客 369

基于语义分割的实时建图:HDMap动态更新

基于语义分割的实时建图:HDMap动态更新​ ,人工智能,计算机视觉,大模型,AI,本文围绕基于语义分割的实时建图技术在HDMap动态更新中的应用展开,介绍了语义分割基础、HDMap概述、相关实时建图技术、动态更新关键技术、系统性能评估指标、实际应用案例、面临的挑战与解决方案及未来发展趋势。阐述了该技术如何利用传感器数据和语义分割算法,解决传统HDMap构建与更新的弊端,分析了其在精度、实时性、鲁棒性等方面的表现,以及在自动驾驶和智能交通中的应用,还探讨了现存问题及未来优化方向。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 22万+

前程无忧Python岗位数据采集:基于API直连的高效招聘信息爬取实战

本文介绍了一个基于Python requests库的前程无忧招聘数据采集系统。项目通过分析API接口结构,配置完整的请求头和身份验证参数,实现了高效稳定的数据采集。系统支持多页数据批量获取,包含工作名称、薪资范围等关键字段的结构化解析,并将结果存储为Excel文件。技术实现涉及API分析、身份验证、请求头配置、数据清洗等关键步骤,同时强调遵守法律和道德规范。该系统可为求职者、HR和市场分析师提供有价值的行业数据支持,适用于市场分析、职业规划等场景。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1553

【算法与数据结构】209、LeetCode长度最小的子数组

所有的LeetCode题解索引,可以看这篇文章——。

晚安的博客 393

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-差分信号

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的差分拓扑进行说明,以下图为例,准备好发送接收端的IBIS模型, (ibis_se.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 440

1293: [SCOI2009]生日礼物

1293: [SCOI2009]生日礼物Time Limit:10 SecMemory Limit:162 MBSubmit:1096Solved:584[Submit][Status]Description小西有一条很长的彩带,彩带上挂着各式各样的彩珠。已知彩珠有N个,分为K种。简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置)。某些坐标上可以没有彩珠...

117

【气候模式降尺度】分位数增量映射(QDM)原理及MATLAB代码实现

简介QDM原理及其MATLAB代码实现

WW、forever的博客 5864

LabVIEW实现TCP通信

在本节中,我们将简要探讨TCP通信的基础知识,并以工业物联网平台TLINK中的云端设备数据发布设计为例,详细阐述在互联网环境下TCP客户端应用程序设计的基本方法。

不脱发的程序猿 1967

【搞定算法】需要排序的最短子数组长度

题目:给定一个无序数组 arr,求出需要排序的最短子数组长度。例如:arr = [1,5,3,4,2,6,7] 返回 4,因为只有 [5,3,4,2] 需要排序。 要求:时间复杂度 O(N)、额外空间复杂度O(1)。 假设数组为 [a b c d e f g h i j k l m n],如果 abc 是有序的,mn是 有序的,至于中间的 defghijkl 是无序的,我们可以得知,如果...

Java学习 1477

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

华为OD机试真题---最短木板长度

小明有n块木板,每块木板的长度不同。现在小明买了一块长度为m的木料,这块木料可以切割成任意块,然后拼接到已有的木板上用来加长木板。小明的目标是让最短的木板长度尽可能长。问题要求计算加长木板后,最短木板的长度最大可以为多少。

风信子的博客 924

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

需要排序的最短子数组长度

【题目】给定一个无序数组arr,求出需要排序的最短子数组长度。 例如:arr=[1,5,3,4,2,6,7]返回4,因为只有[5,3,4,2]需要排序 public class GetMinLength { /* * 给定一个无序数组arr,求出需要排序的最短子数组长度 */ public static int getMinLength(int[] arr) { if (arr =...

gkq_tt的博客 292

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

8.6需要排序的最短子数组长度

题目 给定一个无序数组arr,要使数组排序成递增的,求出需要排序的最短子数组长度。 代码实现 public class GetMinLength { public int getMinLength(int[] arr) { if (arr == null || arr.length < 2) { return 0; } ...

Forat 247

最短排序(java)

题目:对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。 给定一个整数数组A及它的大小n,请返回最短子数组的长度。 测试样例: [1,5,3,4,2,6,7],7 返回:4 思路:保证每次循环数组中左边的数最小,右边的数最大,如果不符合就直接退出循环,如果符合条件,就进行下一个数的比较。可参考一下快速排序算法。 public class zuiduanpaixu { publi...

qq_38490570的博客 281
上一篇: 算法总结之 将正方形矩阵顺时针转动90度
下一篇: 算法总结之 在数组中找到出现次数 > N/K的数
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值