-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathPartSort.java
57 lines (35 loc) · 1.28 KB
/
PartSort.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package swordPointOffer;
/**
* @Author: Wenhang Chen
* @Description:给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。注意:n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。 示例:
* <p>
* 输入: [1,2,4,7,10,11,7,12,6,7,16,18,19]
* 输出: [3,9]
* 提示:
* <p>
* 0 <= len(array) <= 1000000
* @Date: Created in 9:11 4/29/2020
* @Modified by:
*/
public class PartSort {
public int[] subSort(int[] array) {
if (array == null || array.length == 0) return new int[]{-1, -1};
int last = -1, first = -1;
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
int len = array.length;
for (int i = 0; i < len; i++) {
if (array[i] < max) {
last = i;
} else {
max = Math.max(max, array[i]);
}
if (array[len - 1 - i] > min) {
first = len - 1 - i;
} else {
min = Math.min(min, array[len - 1 - i]);
}
}
return new int[]{first, last};
}
}