<?php declare(strict_types=1); namespace leetcode; class BinarySearch { public static function search(array &$nums, int $target): int { if (empty($nums)) { return -1; } $n = count($nums); [$left, $right] = [0, $n - 1]; while ($left <= $right) { $mid = $left + intdiv($right - $left, 2); if ($nums[$mid] > $target) { $right = $mid - 1; } elseif ($nums[$mid] < $target) { $left = $mid + 1; } else { return $mid; } } return -1; } public static function search2(array &$nums, int $target): int { if (empty($nums)) { return -1; } [$left, $right] = [0, count($nums)]; while ($left < $right) { $mid = $left + (($right - $left) >> 1); if ($nums[$mid] > $target) { $right = $mid; } elseif ($nums[$mid] < $target) { $left = $mid + 1; } else { return $mid; } } return -1; } }