34. Find First and Last Position of Element in Sorted Array

class Solution {

    /**
     * @param Integer[] $nums
     * @param Integer $target
     * @return Integer[]
     */
    function searchRange($nums, $target) {
        if (empty($nums)) {
            return [-1, -1];
        }
        $left = 0;
        $right = array_key_last($nums);
        $start = -1;
        $end = -1;
        while ($left <= $right) {
            $mid = floor($left + ($right - $left) / 2);
            if ($nums[$mid] > $target) {
                $right = $mid - 1;
            } elseif ($nums[$mid] < $target) {
                $left = $mid + 1;
            } else {
                $start = $left;
                $end = $right;
                while ($target != $nums[$end]) {
                    --$end;
                }
                while ($target != $nums[$start]) {
                    ++$start;
                }

                return [$start, $end];
            }
        }

        return [$start, $end];
    }
}

https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/solutions/3631134/found-target-position-and-search-min-index-and-max-index

Last updated