热门标签 | 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(最短未分类连续子阵列)


推荐阅读
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • TechStride 网站
    TechStride 成立于2014年初,致力于互联网前沿技术、产品创意及创业内容的聚合、搜索、学习与展示。我们旨在为互联网从业者提供更高效的新技术搜索、学习、分享和产品推广平台。 ... [详细]
  • Qt中QSpinBox与QSlider的联动实现
    本文介绍如何在Qt框架下将QSpinBox和QSlider组件进行联动,使用户在拖动滑块或修改文本框中的数值时,两个组件能同步更新,从而提供更加直观和便捷的用户体验。 ... [详细]
  • 本文介绍了如何使用Java中的同步方法和同步代码块来实现两个线程的交替打印。一个线程负责打印1到52的数字,另一个线程负责打印A到Z的字母,确保输出顺序为12A34B...5152Z。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文详细探讨了 Django 的 ORM(对象关系映射)机制,重点介绍了其如何通过 Python 元类技术实现数据库表与 Python 类的映射。此外,文章还分析了 Django 中各种字段类型的继承结构及其与数据库数据类型的对应关系。 ... [详细]
  • 探讨了在有序数列中实现多种查询和修改操作的高效数据结构设计,主要使用线段树与平衡树(Treap)结合的方法。 ... [详细]
  • 深入理解T-SQL中的NULL与三值逻辑
    本文探讨了SQL Server中的三值逻辑,解释了谓词计算结果为TRUE、FALSE和UNKNOWN的规则。通过具体示例,详细说明了如何正确处理NULL值,并探讨了在不同约束条件下的行为。 ... [详细]
  • 本文介绍如何通过SSH协议使用Xshell远程连接到Ubuntu系统。为了实现这一目标,需要确保Ubuntu系统已安装并配置好SSH服务器,并保证网络连通性。 ... [详细]
  • 落樱3D v0.5是一款在Android平台上发布的3D美少女格斗游戏,本次更新带来了多项新功能和优化。 ... [详细]
  • 回顾2014年,我经历了多个重要项目和学习阶段,取得了一定的成绩。新的一年即将到来,希望能在更多项目实践中继续成长。 ... [详细]
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社区 版权所有