LeetCode-581. Shortest Unsorted Continuous Subarray
来源:互联网 发布:网络的宣传语 编辑:程序博客网 时间:2024/06/05 19:29
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.
Note:
Then length of the input array is in range [1, 10,000].
The input array may contain duplicates, so ascending order here means <=.
思路
- 从前往后遍历数组,如果出现了后面小于前面元素的情况,则说明需要重新排序的子数组存在,记录下最小的那个数。
- 从后往前遍历数组,如果出现前面元素大于后面的元素,记录下最大的那个数。
- 从前往后遍历数组,记录下遇到的第一个比之前记录的最小数字大的数的下标a。
- 从后往前遍历数组,记录下遇到的第一个比之前记录的最大数字小的数的下标b。
- 返回长度,即b-a+1。
Java实现
class Solution { public int findUnsortedSubarray(int[] nums) { int lo=0,hi=0; int min=Integer.MAX_VALUE,max=Integer.MIN_VALUE; for(int i=0;i<nums.length-1;++i) { if(nums[i]>nums[i+1]) min=Math.min(nums[i+1],min); } for(int i=nums.length-1;i>0;--i) { if(nums[i-1]>nums[i]) max=Math.max(nums[i-1],max); } for(int i=0;i<nums.length;++i) { if(nums[i]>min) { lo=i; break; } } for(int i=nums.length-1;i>=0;--i) { if(nums[i]<max) { hi=i; break; } } return (lo==0&&hi==0)?0:hi-lo+1; }}
阅读全文
0 0
- [LeetCode]581. Shortest Unsorted Continuous Subarray
- leetcode 581. Shortest Unsorted Continuous Subarray
- [LeetCode]581. Shortest Unsorted Continuous Subarray
- [leetcode]581. Shortest Unsorted Continuous Subarray
- [leetcode]581. Shortest Unsorted Continuous Subarray
- 【LeetCode】581. Shortest Unsorted Continuous Subarray
- LeetCode 581. Shortest Unsorted Continuous Subarray
- [leetcode]: 581. Shortest Unsorted Continuous Subarray
- [LeetCode] 581. Shortest Unsorted Continuous Subarray
- [LeetCode] 581. Shortest Unsorted Continuous Subarray
- LeetCode 581. Shortest Unsorted Continuous Subarray
- LeetCode: 581. Shortest Unsorted Continuous Subarray
- leetcode 581. Shortest Unsorted Continuous Subarray
- LeetCode 581. Shortest Unsorted Continuous Subarray
- 【LeetCode】581. Shortest Unsorted Continuous Subarray
- [LeetCode] 581. Shortest Unsorted Continuous Subarray
- leetcode 581. Shortest Unsorted Continuous Subarray
- LeetCode-581. Shortest Unsorted Continuous Subarray
- “3D码农 ”紧缺!“新经济”急需大量“数字工匠”
- 奇数还是偶数?
- mybatis的example
- ManyCircle
- 整合多个txt文件到csv文件中(使用c++)
- LeetCode-581. Shortest Unsorted Continuous Subarray
- ajax
- banner的使用--pizifusheng
- EasyUI 分页
- web框架express安装初体验
- Python内建函数之——filter,map,reduce
- C++设计模式10--命令模式(二)(Command)--降低请求发送者与接收者耦合
- libcurl 如何支持https
- Android高仿微信拍照控件,实战推荐!