← Arrays

Binary Search

Medium
Python
def binary_search(nums,target):
    l,r=0,len(nums)-1
    while l<=r:
        mid=(l+r)//2
        if nums[mid]==target: return mid
        elif nums[mid]<target: l=mid+1
        else: r=mid-1
    return -1
Java
public int binarySearch(int[] nums,int target){
    int l=0,r=nums.length-1;
    while(l<=r){
        int mid=(l+r)/2;
        if(nums[mid]==target) return mid;
        else if(nums[mid]<target) l=mid+1;
        else r=mid-1;
    } return -1;
}

Key Insight

Nearly identical. // vs / for integers. Multi-assign Python only.

Python → Java Differences

  • // vs / integer division
  • len() vs .length
  • Multi-assign l,r=0,n-1
Python
def binary_search(nums,target):
    l,r=0,len(nums)-1
    while l<=r:
        mid=(l+r)//2
        if nums[mid]==target: return mid
        elif nums[mid]<target: l=mid+1
        else: r=mid-1
    return -1
Java
public int binarySearch(int[] nums,int target){
    int l=0,r=nums.length-1;
    while(l<=r){
        int mid=(l+r)/2;
        if(nums[mid]==target) return mid;
        else if(nums[mid]<target) l=mid+1;
        else r=mid-1;
    } return -1;
}

Algorithm Steps

1. l=0 r=last
2. Check mid
3. Adjust range