这是崔斯特的第一百零四篇原创文章
题目详述
给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。
你找到的子数组应是最短的,请输出它的长度。
示例 1:
|
|
说明 :
- 输入的数组长度范围在 [1, 10,000]。
- 输入的数组可能包含重复元素 ,所以升序的意思是<=。
题目详解
方法一
- 将原数组拷贝一份,然后对拷贝后的数组进行排序。
- 对比原数组和排序后的数组,除去前面一部分和后面一部分相同的元素,剩余区间的长度就是结果。
- 时间复杂度为 O(nlogn)。
JAVA
|
|
Go
|
|
Python
|
|
方法二
- 遍历数组,同时进行从头到尾,从尾到头的遍历,分别找出无序连续子数组区间的右边和左边节点;
- 右边点,是从左到右不递增的点,
- 左边点,是从右到左不递减的点,
- 两点之间的距离就是所求值
JAVA
|
|
Go
|
|
Python
|
|
等我提交之后,发现排在第一的解法比我快很多,我当时就呵呵呢
|
|