day87(2.16)——leetcode面试经典150

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

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

题目:

题解:

java 复制代码
class Solution {
    public int[] searchRange(int[] nums, int target) {
        int[] res = new int[2];
        if(nums.length==0) {
            return new int[]{-1,-1};
        }

        //计算左边界
        int l = 0;
        int r = nums.length;
        while(l<r) {
            int mid = (l+r)/2;
            if(nums[mid]<target) {
                l=mid+1;
            }
            else {
                r=mid;
            }
        }
        res[0]=l;

        //计算右边界
        l = 0;
        r = nums.length;
        while(l<r) {
            int mid = (l+r)/2;
            if(nums[mid]<target+1) {
                l=mid+1;
            }
            else {
                r=mid;
            }
        }
        res[1]=l-1;

        if(res[0]<nums.length && nums[res[0]]==target) {
            return res;
        }
        else {
            return new int[]{-1,-1};
        }
    }
}
相关推荐
哈里谢顿19 小时前
跳表(Skip List):简单高效的有序数据结构
数据结构
我叫黑大帅19 小时前
Go 语言并发编程的 “工具箱”
后端·面试·go
H5开发新纪元21 小时前
Nginx 部署 Vue3 项目完整指南
前端·javascript·面试
Lee川1 天前
JavaScript 继承进化史:从原型链的迷雾到完美的寄生组合
前端·javascript·面试
前端Hardy1 天前
别再忽略 Promise 拒绝了!你的 Node.js 服务正在“静默自杀”
前端·javascript·面试
前端Hardy1 天前
你的 Vue 组件正在偷偷吃掉内存!5 个常见的内存泄漏陷阱与修复方案
前端·javascript·面试
UrbanJazzerati1 天前
当网页翻页时,页码藏在哪里?——一次对分页机制的解密之旅
后端·面试
xlp666hub1 天前
Leetcode 第三题:用C++解决最长连续序列
c++·leetcode
着迷不白1 天前
Linux单用户模式密码修改与硬盘注释指南
面试
有意义1 天前
深度拆解分割等和子集:一维DP数组与倒序遍历的本质
前端·算法·面试