Code:
public boolean search(int[] nums, int target) { if (nums.length == 0){ return false; } int left = 0, right = nums.length - 1; while (left <= right){ int mid = left + (right - left) / 2; if (nums[mid] == target) return true; if (nums[left] == nums[mid] && nums[mid] == nums[right]) {left++; right--;} else if (nums[mid] <= nums[right]){ if (nums[mid] < target && nums[right] >= target) left = mid + 1; else right = mid -1; } else { if (nums[left] <= target && nums[mid] > target) right = mid -1; else left = mid + 1; } } return false; }