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

news2024/9/21 2:49:09

🌈🌈😄😄

欢迎来到茶色岛独家岛屿,本期将为大家揭晓34. 在排序数组中查找元素的第一个和最后一个位置,做好准备了么,那么开始吧。

🌲🌲🐴🐴

一、题目名称

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

二、题目要求

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 [-1, -1]。

你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。

三、相应举例

四、限制要求

0 <= nums.length <= 105

-109 <= nums[i] <= 109

nums 是一个非递减数组

-109 <= target <= 109

五、解决办法

六、代码实现

一、题目名称

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

二、题目要求

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 [-1, -1]。

你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。

三、相应举例

示例 1:

输入:nums = [5,7,7,8,8,10], target = 8
输出:[3,4]


示例 2:

输入:nums = [5,7,7,8,8,10], target = 6
输出:[-1,-1]


示例 3:

输入:nums = [], target = 0
输出:[-1,-1]

四、限制要求

  • 0 <= nums.length <= 105

  • -109 <= nums[i] <= 109

  • nums 是一个非递减数组

  • -109 <= target <= 109

五、解决办法

设计并实现时间复杂度为 O(log n) 的算法也就是指二分查找

六、代码实现

深度版:

class Solution {
    public int[] searchRange(int[] nums, int target) {
        int leftIdx = binarySearch(nums, target - 1);
        int rightIdx = binarySearch(nums, target) - 1;
        if (leftIdx <= rightIdx && nums[leftIdx] == target) {
            return new int[]{leftIdx, rightIdx};
        } 
        return new int[]{-1, -1};
    }

    // 第一个大于 target 的数的下标
    public int binarySearch(int[] nums, int target) {
        int left = 0, right = nums.length - 1, ans = nums.length;
        while (left <= right) {
            int mid = (left + right) / 2;
            if (nums[mid] > target) {
                right = mid - 1;
                ans = mid;
            } else {
                left = mid + 1;
            }
        }
        return ans;
    }
}


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/61873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[激光原理与应用-36]:《光电检测技术-3》- 光学测量基础 - 光电效应与光电探测器的基本原理

目录 一、概述 二、光电检测的理论基础&#xff1a;光电效应 三、分类 3.1 光子效应 3.2 热效应 四、光电检测器的参数 五、常见的光电探测器 5.1 光电倍增管&#xff1a;微弱光信号转换成电信号 5.2 光电导器件&#xff1a;电阻或电流随着光强的变化而变化 5.3 光伏…

idea 启动报错 Command line is too long

idea 运行启动类报错 Command line is too long 启动报错信息&#xff1a;Error running ‘Application‘: Command line is too long. 翻译过来就是&#xff1a;启动命令过长&#xff01; 解决方案 1、点开项目启动配置项目&#xff1b; 2、shorten command line 选项选择 J…

(五)进程管理:进程的状态与控制

文章目录一、进程的状态二、进程控制1. 进程控制的原语2. 挂起与激活一、进程的状态 进程的生命周期&#xff1a;从创建到终止的过程 进程的三种基本状态 就绪&#xff08;Ready&#xff09; 可运行而未运行的状态&#xff0c;进程已经分配到除了处理机外的所有资源&#xf…

[附源码]计算机毕业设计校园订餐系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

python数据分析及可视化(十六)金融量化(金融工具、金融分析、Tushare安装使用、双均线分析)

金融介绍 金融就是对现有资源进行重新整合之后&#xff0c;实现价值和利润的等效流通。 比如小明想把手里的资金投资给小李&#xff0c;而小李有好的增值项目但是缺少资金&#xff0c;如果小李的项目创业成功&#xff0c;小明的资金就会增长。 金融工具 在金融市场中可交易的…

时序数据库基本概念学习

目录1、时序数据1.1 定义1.2 数学模型1.3 数据特点2、存储优化3、存储原理4、时序数据模型4.1 基于标签&#xff08;tag-value&#xff09;4.2 基于树形&#xff08;tree schema&#xff09;1、时序数据 1.1 定义 时序数据就是一串按时间维度索引的数据&#xff0c;这类数据描…

C++11闭包函数的几种实现方法

什么是闭包函数 函数就是对传入的一组参数进行运算的行为&#xff0c;闭包函数就是有状态的函数&#xff0c;在参与运算时&#xff0c;除了传入的参数外&#xff0c;还可以对上下文的状态进行运算。类函数运行时就是典型的闭包函数&#xff0c;类函数运行起来后其对象就是状态…

Spring - @PostConstruct 源码解析

文章目录Prejavax.annotation.PostConstruct 注解源码解析扩展示例Pre Spring Boot - 扩展接口一览 javax.annotation.PostConstruct 注解 Documented Retention (RUNTIME) Target(METHOD) public interface PostConstruct { }严格意义上来说这个并不算一个扩展点&#xff0c…

[附源码]计算机毕业设计校园订餐管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

文献阅读总结(4)Graph convolution machine for context-aware recommender system

上下文感知的图卷积推荐系统 推荐方面的最新进展表明&#xff0c;可以通过在用户-项目交互图上执行图卷积来学习更好的用户和项目表示&#xff0c;然而&#xff0c;该方法在协同过滤(CF)的场景中有一定的局限性&#xff0c;在这种场景中交互上下文是不可用的。 在这项工作中&…

python关联规则学习:FP-Growth算法对药品进行“菜篮子”分析

产品可以根据销售者进行分类 在Evolution上&#xff0c;有一些顶级类别&#xff08;“药品”&#xff0c;“数字商品”&#xff0c;“欺诈相关”等&#xff09;细分为特定于产品的页面。每个页面包含不同供应商的几个列表。 最近我们被客户要求撰写关于关联规则的研究报告&am…

字符串的扩展

字符串解读 es6加强了对Unicode 的支持&#xff0c;允许\uxxxx的形式展现一个字符&#xff0c;例如&#xff1a; console.log(\u0061); // 打印 a\u后面的为字符的 Unicode 码点 \u 后面4位 xxxx 但是这种写法只识别 \u0000 到 \UFFFF 之间的字符&#xff0c;超出需要使用两…

第十七章 管理组件库的pull request

一个好的项目很少会由一个人来独立完成。即使你完成了所有功能实现&#xff0c;也需要有人给你 Review 和提建议、找 Bug。比如添加新的组件、完善文档、添加单元测试、提出改进意见。 这节课我们就介绍一下如何参与开源社区的代码贡献。对于任何一个开源项目&#xff0c;我们…

map容器/multimap容器

目录 1.map基本概念 简介 本质 优点 map和multimap区别 2.map构造和赋值 功能描述: 函数原型 3.map大小和交换 功能描述 函数原型 4 map插入和删除 功能描述 函数原型 5. map查找和统计 功能描述 函数原型 6 map容器排序 学习目标 主要技术点 1.map基本概念…

web入门-爆破

文章目录web21web22web23python脚本php脚本web24web25web26web27web28web21 进入网站&#xff0c;提示要登陆&#xff0c;妥爆破 抓包 注意到最下行的base64编码 发现就是刚刚输入的账号密码 因此这里就是要选择爆破的地方了 发给inruder&#xff0c;添加爆破位 载入题目给…

【坚持不懈的每日一题——力扣篇】1774. 最接近目标价格的甜点成本(中等)-- dfs / dp

GitHub同步更新&#xff08;已分类&#xff09;&#xff1a;Data_Structure_And_Algorithm-Review 公众号&#xff1a;URLeisure 的复习仓库 公众号二维码见文末 以下是本篇文章正文内容&#xff0c;下面案例可供参考。 一、题目描述 力扣今天推的每日一题是道中等题 。 示例…

qt人员管理模块(模块化程序)功能块复制直接使用不冲突

一、前言 qt对人员管理部分个人总结的模块化程序&#xff0c;直接按照步骤复制粘贴程序&#xff0c;直接实现人员管理功能&#xff0c;无需花费脑筋在理清各个思路&#xff0c;适合快速编写组装程序 二、环境 windows qt5.7 sqlite3 三、正文 思来想去大半天&#xff0c;…

JS快速入门

一、JS介绍 JavaScript &#xff08;简称JS&#xff09;&#xff0c;是一门跨平台、面向对象的脚本语言&#xff08;弱类型语言&#xff09;&#xff0c;而Java语言也是跨平台的、面向对象的语言&#xff0c;只不过Java是编译语言&#xff0c;是需要编译成字节码文件才能运行的…

自定义RBAC(1)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; 在对Spring Security稍做了解之后&#xff0c;可以知道&#xff0c;Spring Security其实只是一个实现认证授权的框架&#xff0c;封装了很多实现细节。但也有一些…

【Linux网络编程】服务端编程初体验

文章目录前言服务端是啥、有什么特点核心函数socket的简介服务器编程客户端代码The End前言 在上节课(Linux网络编程初体验)中我们实现了连接bilibili的功能&#xff0c;并获取其html源码 如图所示. 今天我们要自己编写个服务端来服务我们的客户端 提示&#xff1a;以下是本篇…