热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

175.ShortestUnsortedContinuousSubarray(最短未分类连续子阵列)

题目:Givenanintegerarray,youneedtofindone continuoussubarray thatifyouonlysortthissubarrayin
题目:

Given an integer array, you need to find one continuous subarray that if you only sort this subarray in ascending order, then the whole array will be sorted in ascending order, too.

给定一个整数数组,您需要找到一个连续的子数组,如果您只按升序对此子数组进行排序,那么整个数组也将按升序排序。

You need to find the shortest such subarray and output its length.

您需要找到最短的子阵列并输出其长度。

Example 1:

Input: [2, 6, 4, 8, 10, 9, 15]
Output: 5
Explanation: You need to sort [6, 4, 8, 10, 9] in ascending order to make the whole array sorted in ascending order.
说明:您需要按升序对[6,4,8,10,9]进行排序,以使整个数组按升序排序。

Note:

  1. Then length of the input array is in range [1, 10,000].然后输入数组的长度在[1,100]范围内。
  2. The input array may contain duplicates, so ascending order here means <=.输入数组可能包含重复项,因此这里的升序表示<=。
解答:

 时间复杂度O(n),空间复杂度O(1)

 1 class Solution {
 2     public int findUnsortedSubarray(int[] nums) {
 3         int start=-1,end=-2,n=nums.length,max=nums[0],min=nums[n-1];
 4         
 5         for(int i=1;i){
 6             max=Math.max(max,nums[i]);
 7             min=Math.min(min,nums[n-1-i]);
 8             if(max>nums[i]) end=i;
 9             if(nums[n-i-1]>min) start=n-1-i;
10         }
11         
12         return end-start+1;
13     }
14 }
详解:

令start=-1,end=-2,这样end-start+1=0,即需要排序的子序列长度为0。

排好序的数组一定是前项<后项,end从前往后遍历,start从后往前遍历。

max为从前往后遍历时遇到的最大值,min为从后往前遍历时遇到的最小值。

如果max>当前项nums[i],说明此项大小异常,标记。

如果当前项nums[n-1-i]>min,说明此项大小异常,标记。

[2,6,4,8,10,15]

i=1,end=-2,start=-1,max=6,min=9

i=2,end=2, start=4, max=6,min=9

i=3,end=2, start=4, max=8,min=8

i=4,end=2,start=4,max=10,min=4

i=5,end=5,start=1,max=10,min=4

i=6,end=5,start=1,max=15,min=2

175.Shortest Unsorted Continuous Subarray(最短未分类连续子阵列)


推荐阅读
  • 网络流24题——试题库问题
    题目描述:假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算 ... [详细]
  • 本文探讨了使用普通生成函数和指数生成函数解决组合与排列问题的方法,特别是在处理特定路径计数问题时的应用。文章通过详细分析和代码实现,展示了如何高效地计算在给定条件下不相邻相同元素的排列数量。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 本文详细介绍了C++中的构造函数,包括其定义、特点以及如何通过构造函数进行对象的初始化。此外,还探讨了转换构造函数的概念及其在不同情境下的应用,以及如何避免不必要的隐式类型转换。 ... [详细]
  • 数据类型--char一、char1.1char占用2个字节char取值范围:【0~65535】char采用unicode编码方式char类型的字面量用单引号括起来char可以存储一 ... [详细]
  • 3DSMAX制作超现实的体育馆模型
    这篇教程是向脚本之家的朋友介绍3DSMAX制作超现实的体育馆模型方法,教程制作出来的体育馆模型非常地不错,不过教程有点难度,需要有一定基础的朋友学习,推荐到脚本之家,喜欢的朋友可 ... [详细]
  • 本文介绍了如何在AngularJS应用中使用ng-repeat指令创建可单独点击选中的列表项,并详细描述了实现这一功能的具体步骤和代码示例。 ... [详细]
  • 在项目冲刺的最后一天,团队专注于软件用户界面的细节优化,包括调整控件布局和字体设置,以确保界面的简洁性和用户友好性。 ... [详细]
  • JavaScript 页面卸载事件详解 (onunload)
    当用户从页面离开时(如关闭页面或刷新页面),会触发 onunload 事件,此时可以执行预设的脚本。需要注意的是,不同的浏览器对 onunload 事件的支持程度可能有所不同。 ... [详细]
  • 探索Java 11中的ZGC垃圾收集器
    Java 11引入了一种新的垃圾收集器——ZGC,由Oracle公司研发,旨在支持TB级别的内存容量,并保证极低的暂停时间。本文将探讨ZGC的开发背景、技术特点及其潜在的应用前景。 ... [详细]
  • 本文详细介绍了iOS应用的生命周期,包括各个状态及其转换过程中的关键方法调用。 ... [详细]
  • 项目风险管理策略与实践
    本文探讨了项目风险管理的关键环节,包括风险管理规划、风险识别、风险分析(定性和定量)、风险应对策略规划及风险控制。旨在通过系统的方法提升项目成功率,减少不确定因素对项目的影响。 ... [详细]
  • 探索AI智能机器人自动盈利系统的构建
    用户可通过支付198元押金及30元设备维护费租赁AI智能机器人,推荐他人加入可获得相应佣金。随着推荐人数的增加,用户将逐步解锁更高版本,享受更多收益。 ... [详细]
author-avatar
手机用户2702932807
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有