c++ solution: binary search


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

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.