Isaac Emmanuel
09 Sept 2026•EasyGo / Python / TypeScript

Binary Search

Locate a target in a sorted integer array or report that it is absent.

Maintain an inclusive search interval, compare its midpoint with the target, and discard the impossible half after each comparison.

Complexity

O(log n) time and O(1) extra space.

Solution files

Go•binary-search/solution.go
package main

func search(nums []int, target int) int {
	left, right := 0, len(nums)-1
	for left <= right {
		middle := left + (right-left)/2
		if nums[middle] == target {
			return middle
		}
		if nums[middle] < target {
			left = middle + 1
		} else {
			right = middle - 1
		}
	}
	return -1
}
Python•binary-search/solution.py
class Solution:
    def search(self, nums: list[int], target: int) -> int:
        left, right = 0, len(nums) - 1
        while left <= right:
            middle = left + (right - left) // 2
            if nums[middle] == target: return middle
            if nums[middle] < target: left = middle + 1
            else: right = middle - 1
        return -1
TypeScript•binary-search/solution.ts
function search(nums: number[], target: number): number {
  let left = 0;
  let right = nums.length - 1;
  while (left <= right) {
    const middle = left + Math.floor((right - left) / 2);
    if (nums[middle] === target) return middle;
    if (nums[middle] < target) left = middle + 1;
    else right = middle - 1;
  }
  return -1;
}