平民解法:

既然是找最小数组,那就得到一个排序好的数组,然后直接和初试数组比对,用一个left,right分别记录从最初开始不同,到最后不同的小标,最后左右做差再加一,就能得到长度。

其他解法:

双指针 + 线性扫描
另外一个做法是,我们把整个数组分成三段处理。

起始时,先通过双指针 ii 和 jj 找到左右两次侧满足 单调递增 的分割点。

即此时 [0, i][0,i] 和 [j, n)[j,n) 满足升序要求,而中间部分 (i, j)(i,j) 不确保有序。

然后我们对中间部分 [i, j][i,j] 进行遍历:

发现 nums[x] < nums[i - 1]nums[x]<nums[i−1]:由于对 [i, j][i,j] 部分进行排序后 nums[x]nums[x] 会出现在 nums[i - 1]nums[i−1] 后,将不满足整体升序,此时我们需要调整分割点 ii 的位置;
发现 nums[x] > nums[j + 1]nums[x]>nums[j+1]:由于对 [i, j][i,j] 部分进行排序后 nums[x]nums[x] 会出现在 nums[j + 1]nums[j+1] 前,将不满足整体升序,此时我们需要调整分割点 jj 的位置。

链接:https://leetcode-cn.com/problems/shortest-unsorted-continuous-subarray/solution/gong-shui-san-xie-yi-ti-shuang-jie-shuan-e1le/
来源:力扣(LeetCode)

最新文章

  1. epoll ET模式陷阱分析
  2. label正确显示多行数据
  3. 简易版viewport
  4. route工具
  5. CentOS 5.x版本升级PHP
  6. .NET设计模式(19):观察者模式(Observer Pattern)(转)
  7. Oracle基础&lt;4&gt;--程序包
  8. iOS开发——数据持久化Swift篇&amp;模型对象归档
  9. MemCachedClient数据写入的三个方法
  10. Android4.3模拟器界面中右侧菜单按钮无法使用问题解决办法
  11. phabricator在mac上的搭建(转)
  12. SZU:B47 Big Integer I
  13. iOS完美版的UIScrollView无缝循环:你值得一看
  14. validateform正则表达式 datatype验证数字
  15. iOS中 Swift初级入门学习(三)
  16. 将本地jar包打包到本地仓库和上传到私服
  17. [转载] java多线程总结(三)
  18. BZOJ4482[Jsoi2015]套娃——贪心+set
  19. numpy学习之前的必要数学知识:线性代数
  20. 用户 &#39;IIS APPPOOL\xxxx&#39; 登录失败

热门文章

  1. 小Z的袜子(hose) &amp;&amp;作业 (莫队)
  2. Windows批处理文件编写宝典
  3. 什么是WAF?
  4. Redis的Pipeline、事务和lua
  5. 服务器通信REST、gRPC,Swagger/OpenAPI,Consul
  6. Linux中ls的用法
  7. 26、linux文件系统
  8. R 语言学习过程全记录 ~
  9. WPF教程七:通过App.xaml来了解Application类都能干什么
  10. solr_hacktool