Approach:
Step 1 Use binary search
Step 2 Find mid
Step 3 Check which side is sorted
Step 4 Check target in sorted side
Step 5 Move left or right
Why this works???
Array is rotated but one half always sorted
so we decide direction using that
Code:
def search(nums,target):
l,h=0,len(nums)-1
while l<=h:
m=(l+h)//2
if nums[m]==target:
return m
if nums[l]<=nums[m]:
if nums[l]<=target<nums[m]:
h=m-1
else:
l=m+1
else:
if nums[m]<target<=nums[h]:
l=m+1
else:
h=m-1
return-1
Limitation:
Logic slightly tricky
Top comments (0)