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.
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.
O(log n) time and O(1) extra space.
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
}
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
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;
}