LC.81. Search in Rotated Sorted Array II
https://leetcode.com/problems/search-in-rotated-sorted-array-ii/description/
Follow up for "Search in Rotated Sorted Array":
What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
Write a function to determine if a given target is in the array.
make sure also checks the LC.33
1 public boolean search(int[] nums, int target) {
2 if (nums == null || nums.length ==0 ) return false ;
3 int left = 0, right = nums.length - 1 ;
4 while (left + 1 < right){
5 int mid = left + (right - left) /2 ;
6 if (nums[mid] == target) return true;
7 /*when left == mid or mid == right this will not provide any useful info(could not determine the range)
8 */
9 if (nums[left] == nums[mid] ){
10 left ++ ;
11 }
12 if (nums[mid] == nums[right]){
13 right--;
14 }
15 //upper part
16 if (nums[left]<nums[mid]){
17 if (nums[left]<=target && target <=nums[mid]){
18 right = mid ;
19 } else {
20 left = mid ;
21 }
22 }
23 //lower part
24 else if (nums[mid] < nums[right]){
25 if (nums[mid]<=target && target<=nums[right]){
26 left = mid ;
27 } else {
28 right = mid ;
29 }
30 }
31 }
32 //post processing
33 if (nums[left] == target){
34 return true;
35 }
36 if(nums[right] == target){
37 return true ;
38 }
39 return false ;
40 }