81. Search in Rotated Sorted Array II
升级版二分法,注意边界。。。。。。。。。。特别是target所在的范围,是一块连续的区域。如果有重复数字的话,就把左边界自增1,指向下一个数字。
public boolean search(int[] nums, int target) {
int l = 0,
r = nums.length;
while (l < r) {
int mid = (l + r) >>> 1;
if (nums[mid] == target) return true;
if (nums[mid] > nums[l]) { // increment
if (target >= nums[l] && target < nums[mid]) {
r = mid;
} else {
l = mid + 1;
}
} else if (nums[mid] < nums[l]) { // decrement
if (target > nums[mid] && target <= nums[r - 1]) {
l = mid + 1;
} else {
r = mid;
}
} else if (nums[mid] == nums[l]) {
l += 1;
}
}
return false;
}