首页 > 其他分享 >[LeetCode Hot 100] LeetCode34.在排序数组中查找元素的第一个和最后一个位置

[LeetCode Hot 100] LeetCode34.在排序数组中查找元素的第一个和最后一个位置

时间:2023-12-19 20:34:25浏览次数:34  
标签:return nums int mid Hot new 100 LeetCode left

题目描述

思路:

二分查找之寻找左右侧边界
两个关键点:1. 数组有序;2. 时间复杂度O(log n)

方法一:

class Solution {
    public int[] searchRange(int[] nums, int target) {
        if (nums.length == 0 || nums == null) {
            return new int[]{-1, -1};
        }
        int leftBound = -1;
        // 寻找最左边界
        int left = 0, right = nums.length - 1;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (target == nums[mid]) {
                if (mid == 0 || nums[mid - 1] != target) {
                    leftBound = mid;
                    break;
                } else {
                    right = mid - 1;
                }
            } else if (target < nums[mid]) {
                right = mid - 1;
            } else if (target > nums[mid]) {
                left = mid + 1;
            }
        }
		// 说明没有找到左边界,此时直接返回[-1, -1]
        if (leftBound == -1) {
            return new int[]{-1, -1};
        }
		// 开始寻找右边界
        left = 0;
        right = nums.length - 1;
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (target == nums[mid]) {
               if (mid == nums.length - 1 || nums[mid + 1] != target) {
                   return new int[]{leftBound, mid};
               } else {
                   left = mid + 1;
               }
            } else if (target < nums[mid]) {
               right = mid - 1;

            } else if (target > nums[mid]) {
                left = mid + 1;
            }
        }
        return new int[]{-1, -1};
    }
}

标签:return,nums,int,mid,Hot,new,100,LeetCode,left
From: https://www.cnblogs.com/keyongkang/p/17914662.html

相关文章

  • 记录--一行代码修复100vh bug
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助你知道奇怪的移动视口错误(也称为100vhbug)吗?或者如何以正确的方式创建全屏块?一、100vhbug什么是移动视口错误?你是否曾经在网页上创建过全屏元素?只需添加一行CSS并不难:.my-page{height:100vh}1v......
  • 【2023潇湘夜雨】WIN11_Pro_Canary_26016.1000软件选装纯净版12.19
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_Canary_26016.1000。2.增加部分优化方案,手工精简部分较多,干掉右下角水印。3.OS版本号为26016.1000。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.1......
  • C0328 【1005 C组】模拟测试 斜率 题解
    原题链接:斜率。题意在一个平面直角坐标系中,给定\(n\)个点的横纵坐标,求出哪两个点所构成的连线的斜率最接近\(\frac{P}{Q}\)。数据范围:\(n\le1000000\)。思路显然这是一道数学题,不能直接暴力去找答案。首先我们可以弱化一下题目,求出斜率最接近\(y=0\)即\(x\)轴的两......
  • 同样的程序,有时是gpu正常10%,有时gpu占用率到达或接近100%?提供一个解决方案
    同样的程序,同样的代码,只在不同时间运行,有时是gpu正常10%,有时gpu占用率到达或接近100%?这里提供一个排错的解决方案1、首先打开任务管理器,看看cpu的连续正常运行时间,如果超过了1天,请重启或按shift后关闭电脑再开机,这个方法可以把重复运行的程序的一些积累效应去掉我通过这个方式......
  • 一行代码修复100vh bug | 京东云技术团队
    你知道奇怪的移动视口错误(也称为100vhbug)吗?或者如何以正确的方式创建全屏块?一、100vhbug什么是移动视口错误?你是否曾经在网页上创建过全屏元素?只需添加一行CSS并不难:.my-page{height:100vh}1vh是视口高度的1%,正是我们所需要的。但当我们在移动设备上测试时,就......
  • 五年之后超过10000订阅者
    本周运维咖啡吧公众号的订阅者超过一万,虽然早已不再过多关注粉丝的数量,但真的到了过万这个里程碑节点还是十分高兴,这距离上一个粉丝五千的里程碑已经过去了超过四年,距离写公众号开始已经超过了五年。五年时间,订阅者万人,对于一个公众号的运营者来说无疑是失败的,太长的时间微不足道......
  • #yyds干货盘点# LeetCode程序员面试金典:有序矩阵中第 K 小的元素
    题目给你一个nxn矩阵matrix,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个不同的元素。你必须找到一个内存复杂度优于O(n2)的解决方案。 示例1:输入:matrix=[[1,5,9],[10,11,13],[12,13,15]],k=8输......
  • 面试常考:C#用两个线程交替打印1-100的五种方法
    面试常考:C#用两个线程交替打印1-100的五种方法翔星有10年+工作经验,高级软件工程师,可以解决各种问题​关注 你经常看TA的内容"C#用两个线程交替打印1-100的五种方法"是.NET工程师面试多线程常考的试题之一,主要考察对C#语法和对多线程的熟悉程......
  • 初中英语优秀范文100篇-031My Daily Life-我的日常生活
    PDF格式公众号回复关键字:SHCZFW031记忆树1Mydailylifeisinterestingandcolorful.翻译我的日常生活有趣且丰富多彩。简化记忆生活句子结构主语:Mydailylife(我的日常生活)谓语:is(是)宾语:interestingandcolorful(有趣且多彩的)这句话的意思是“我的日常生活是有......
  • MURF10100AC-ASEMI新能源功率器件MURF10100AC
    编辑:llMURF10100AC-ASEMI新能源功率器件MURF10100AC型号:MURF10100AC品牌:ASEMI封装:TO-220F最大平均正向电流:10A最大重复峰值反向电压:1000V产品引线数量:3产品内部芯片个数:2产品内部芯片尺寸:84MIL峰值正向漏电流:<10ua恢复时间:35ns浪涌电流:150A芯片材质:最大正向电压:1.90V工作结温:-55℃~......