Skip to content

Latest commit

 

History

History
76 lines (64 loc) · 1.8 KB

33.-search-in-rotated-sorted-array.md

File metadata and controls

76 lines (64 loc) · 1.8 KB

33. Search in Rotated Sorted Array

{% tabs %} {% tab title="CPP" %}

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int ans = -1;
        if (nums.size()==0) return ans;
        int left = 0;
        int right = nums.size() - 1;
        while (left <= right) {
            int mid = (right - left )/2 + left;
            if (nums[mid] == target){
                return mid ;
            }
            
            else if (nums[mid] > nums[left]) {
                if (nums[left] <= target && target < nums[mid]){
                    right = mid ;
                } else {
                    left = mid + 1;
                }
            }
            else {
                if ((nums[mid] < target && target <= nums[right])){
                    left = mid + 1;
                    
                } else {
                    right = mid;
                }
            }
        }
        return nums[left] == target ? left : ans;
    }
};

{% endtab %}

{% tab title="Python" %}

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        
        
        ans = -1
        if not nums:
            return ans 
        l = 0
        r = len(nums)-1
        while l < r:
            
            mid = (l+r)//2
            if nums[mid] == target:
                return mid
                
            # left ordered
            elif nums[l] < nums[mid]:
                if nums[l] <= target < nums[mid]:
                    r = mid
                else:
                    l = mid + 1
                
            else:
                if nums[mid+1] <= target <= nums[r]:
                    l = mid + 1
                else:
                    r = mid
                
        
        return l if nums[l] == target else ans

{% endtab %} {% endtabs %}