Search in Rotated Sorted Array
Medium
Watch on YouTube ↗Solution
class Solution {
public int search(int[] nums, int target) {
int low = 0, high = nums.length-1;
while(low<=high) {
// O(logn) // O(1)
int mid = low + (high-low)/2;
if(nums[mid]==target)
return mid;
// right array sorted
if(nums[mid] < nums[high]) {
if(target > nums[mid] && target<=nums[high])
low = mid+1;
else high = mid-1;
}
// left array sorted
else {
if(target>=nums[low] && target<nums[mid])
high = mid-1;
else low = mid+1;
}
}
return -1;
}
}