l*****8 发帖数: 1083 | 1 Find Minimum in Rotated Sorted Array II
public class Solution {
public int findMin(int[] num) {
if (num == null) {
return 0;
}
return binarySearch(num, 0, num.length-1);
}
private int binarySearch(int[] num, int i, int j) {
if (i > j) {
return num[0];
}
if (i == j) {
return num[i];
}
int mid = i + (j-i)/2;
int midLeft = mid;
int midRight = mid;
while (midLeft > i && num[midLeft] == num[midLeft-1]) {
midLeft--;
}
while (midRight < j && num[midRight] == num[midRight+1]) {
midRight++;
}
if (midLeft > i && num[mid] < num[midLeft-1]) {
return num[mid];
}
if (midRight < j && num[mid] > num[midRight+1]) {
return num[midRight+1];
}
if (midLeft == i && midRight == j) {
return num[mid];
}
if (midRight != j && num[mid] >= num[j]) {
return binarySearch(num, midRight+1, j);
}
else if (midLeft != i && num[mid] <= num[i]) {
return binarySearch(num, i, midLeft-1);
}
else {
return num[0];
}
}
} | s**x 发帖数: 7506 | | l*****8 发帖数: 1083 | 3 现写的,整理过思路,可以写地比较简洁,lc给的答案就不错
【在 s**x 的大作中提到】 : 楼下刚讨论过,不需要超过10行代码。
|
|