5 April 2024

Easy

704. Binary Search

Link: https://leetcode.com/problems/binary-search

Description: Implement a binary search algorithm to find the target value in a sorted array.

Solution:

Create two pointers, left and right, that represent the range of the array to search. While the left pointer is less than or equal to the right pointer, calculate the middle index m. If the value at index m is equal to the target, return m. If the value at index m is greater than the target, update the right pointer to m - 1. If the value at index m is less than the target, update the left pointer to m + 1. If the target is not found, return -1.

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var search = function (nums, target) {
  let left = 0
  let right = nums.length - 1

  while (left <= right) {
    const m = left + Math.floor((right - left) / 2)

    if (nums[m] === target) {
      return m
    } else if (nums[m] > target) {
      right = m - 1
    } else {
      left = m + 1
    }
  }

  return -1
}