前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

0x034 在排序数组中查找元素的第一个和最后一个位置

qiguaw 2024-09-21 21:48:54 资源文章 15 ℃ 0 评论

34.在排序数组中查找元素的第一个和最后一个位置

https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/

代码【二分搜索】

思路:

1、先设定左右端点:l=0, r=n-1

2、二分范围l<=r

3、二分

  • nums[m] > target时,r = m - 1
  • nums[m] < target时,l = m + 1
  • nums[m] == target时,左右扩散确定范围

public int[] searchRange(int[] nums, int target) {
    int[] ans = new int[]{-1, -1};
    int n = nums.length;
    if (n == 0) {
        return ans;
    }

    int l = 0;
    int r = n - 1;
    while (l <= r) { // []
        int m = l + ((r- l) >> 1);
        if (nums[m] == target) {
            l = m;
            r = m;
            while (l > 0 && nums[l] == nums[l - 1]) {
                l --;
            }
            while (r < n - 1 && nums[r] == nums[r + 1]) {
                r ++;
            }
            return new int[]{l, r};
        } else if (nums[m] > target) {
            r = m - 1;
        } else {
            l = m + 1;
        }
    }

    return ans;
}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表