Find Minimum in Rotated Sorted Array II
public class Solution {
public int findMin(int[] num) {
if(num == null || num.length == 0) return 0;
if(num.length == 1) return num[0];
int low = 0, high = num.length - 1;
int[] min = new int[1];
min[0] = num[0];
find(num, low, high, min);
return min[0];
}
private boolean find(int[] num, int low, int high, int[] min) {
if(low == high - 1) {
if(num[low] > num[high]) {
min[0] = num[high];
return true;
} else {
return false;
}
}
int mid = low + (high - low) / 2;
if(num[low] < num[mid]) {
return find(num, mid, high, min);
} else if(num[low] > num[mid]) {
return find(num, low, mid, min);
} else {
if(num[mid] == num[high]) {
if(find(num, low, mid, min)) {
return true;
} else {
return find(num, mid, high, min);
}
} else {
return find(num, mid, high, min);
}
}
}
}

浙公网安备 33010602011771号