81. Search in Rotated Sorted Array II - cocoder39/coco39_LC GitHub Wiki
81. Search in Rotated Sorted Array II
Discussing about nums[mid] vs nums[low] in the outer if-else can make the implementation clean:
nums[mid] == target || nums[low] == target
else { //nums[mid] == nums[low]
low++
}
look at nums[low] instead of nums[0], since nums[0] might have been kicked out
class Solution {
public boolean search(int[] nums, int target) {
if (nums == null || nums.length == 0) {
return false;
}
int low = 0;
int high = nums.length - 1;
while (high - low > 1) {
int mid = low + (high - low) / 2;
if (nums[mid] == target || nums[low] == target) {
return true;
} else if (nums[mid] > nums[low]) {
if (target > nums[low] && target < nums[mid]) {
high = mid;
} else {
low = mid;
}
} else if (nums[mid] < nums[low]) {
if (target < nums[low] && target > nums[mid]) {
low = mid;
} else {
high = mid;
}
} else {
low++;
}
}
return nums[high] == target || nums[low] == target;
}
}