Binary Search — Classic Exact Target

Sanjeev SharmaSanjeev Sharma
1 min read

Advertisement

Difficulty: Easy · Pattern: Classic Exact Target

Solutions

// C
int search(int* nums, int n, int target) {
    int lo=0, hi=n-1;
    while (lo<=hi) {
        int mid=lo+(hi-lo)/2;
        if (nums[mid]==target) return mid;
        else if (nums[mid]<target) lo=mid+1;
        else hi=mid-1;
    }
    return -1;
}
// C++
int search(vector<int>& nums, int target) {
    int lo=0, hi=nums.size()-1;
    while (lo<=hi) {
        int mid=lo+(hi-lo)/2;
        if (nums[mid]==target) return mid;
        else if (nums[mid]<target) lo=mid+1;
        else hi=mid-1;
    }
    return -1;
}
// Java
public int search(int[] nums, int target) {
    int lo=0, hi=nums.length-1;
    while (lo<=hi) {
        int mid=lo+(hi-lo)/2;
        if (nums[mid]==target) return mid;
        else if (nums[mid]<target) lo=mid+1;
        else hi=mid-1;
    }
    return -1;
}
# Python
def search(nums, target):
    lo, hi = 0, len(nums)-1
    while lo <= hi:
        mid = lo + (hi-lo)//2
        if nums[mid] == target: return mid
        elif nums[mid] < target: lo = mid+1
        else: hi = mid-1
    return -1

Complexity

  • Time: O(log n)
  • Space: O(1)

Advertisement

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro