LeetCode题目-34

首页 编程分享 LEET_CODE 正文

leetCode 转载 编程分享 2018-11-11 00:28:10

简介 LeetCode题目-34


✏基础刷题之(34. Find First and Last Position of Element in Sorted Array)

✏题目描述

。给定一个有序数组,在这个有序数组中找出给定值初始位置和最后出现的位置索引。如果没有,返回[-1,-1]

✏题目实例


✏题目分析

初始位置的值是很好找的,关键点在于第二个位置,因为数组是有序的,如果存在初始位置并且下一个位置不等于给定值的话,那么返回的两个索引是一样的,即初始位置就是最后的位置,否则的话(这里我没有想到别的),那么就进行再一次二分查找,也不知道这是机智还是沙雕哈哈哈。😃结果完全是可行的。

✏最终实现代码


/**
     * @param Integer[] $nums
     * @param Integer $target
     * @return Integer[]
     */
    function searchRange($nums, $target)
    {
        $data = [-1, -1];

        if (count($nums) == 0) {
            return $data;
        }
        $left  = 0;
        $right = count($nums) - 1;

        while ($left < $right) {
            $middle = ($left + $right) >> 1;
            if ($nums[$middle] < $target) {
                $left = $middle + 1;
            } else {
                $right = $middle;
            }
        }

        if ($nums[$left] == $target) {
            $data[0] = $left;
            if ($nums[++$left] != $target) {
                $data[1] = $data[0];
            } else {
                $r = count($nums) - 1;
                $l = $left;
                while ($l < $r) {
                    $middle = ($l + $r + 1) >> 1;
                    if ($nums[$middle] > $target) {
                        $r = $middle - 1;
                    } else {
                        $l = $middle;
                    }
                }
                $data[1] = $r;

            }
        }

        return $data;

    }

转载链接:https://leetcode.cn/


Tags:


本篇评论 —— 揽流光,涤眉霜,清露烈酒一口话苍茫。


    声明:参照站内规则,不文明言论将会删除,谢谢合作。


      最新评论




ABOUT ME

Blogger:袅袅牧童 | Arkin

Ido:PHP攻城狮

WeChat:nnmutong

Email:nnmutong@icloud.com

标签云