2020-04-12 34. Find First and Last Position of Element in Sorted Array

这题如果分别写两个二分查找,还比较简单;如果想写同一个函数做两次二分,就有多一些边界情况要考虑:


class Solution {

    public int[] searchRange(int[] nums, int target) {

        if (nums == null || nums.length == 0) return new int[]{-1, -1};


        int first = findFirstGreaterOrEqualsTo(nums, target, 0);

        if (first == nums.length || nums[first] != target) return new int[]{-1, -1};


        int last = findFirstGreaterOrEqualsTo(nums, target + 1, first + 1) - 1;

        return new int[]{first, last};

    }


    int findFirstGreaterOrEqualsTo(int[] nums, int target, int start) {

        int l = start, r = nums.length;

        // System.out.println("find first...");

        while (l < r) {

            // System.out.println("l: " + l + " r: " + r);

            int mid = l + (r - l) / 2, midVal = nums[mid];

            if (midVal >= target) {

                r = mid;

            } else {

                l = mid + 1;

            }

        }

        return l;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容