给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 比如:nums = [5,7,7,8,8,10], target=8 返回 [3,4]
<?phpclass Solution {/**** @param Integer[] $nums* @param Integer $target* @return Integer[]*/function searchRange($nums, $target) {$ret = [-1, -1];if (!$nums) return $ret;$left = 0;$right = count($nums) - 1;while ($left <= $right) {$mid = floor(($right - $left) / 2) + $left;if ($nums[$mid] == $target) {while ($mid >= $left && $nums[$mid] == $target) {$mid--;}$ret[0] = $mid + 1;$mid = floor(($right - $left) / 2) + $left;while ($mid <= $right && $nums[$mid] == $target) {$mid++;}$ret[1] = $mid - 1;return $ret;} elseif ($nums[$mid] < $target) {$left = $mid + 1;} else {$right = $mid - 1;}}return $ret;}}$nums = [5,7,7,8,8,10];$cls = new Solution();$r = $cls->searchRange($nums, 8);echo implode(',', $r);
