【LeetCode热题100】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

四.解题思路

用两个不同的策略进行两次二分:

  • 每次找到target时让右指针左移,寻找更左的target
  • 每次找到target时让左指针右移,寻找更右的target

最后结果就是最左的target和最右target

五.代码实现

class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {vector<int> ans;int l = 0;int r = nums.size() - 1;int m;int left = -1;int right = -1;//找左边的while (l <= r) {m = (l + r) / 2;if (nums[m] >= target) {if (nums[m] == target) {left = m;}r = m - 1;}else {l = m + 1;}}l = 0;r = nums.size() - 1;//找右边的while (l <= r) {m = (l + r) / 2;if (nums[m] <= target) {if (nums[m] == target) {right = m;}l = m + 1;} else {r = m - 1;}}ans.push_back(left);ans.push_back(right);return ans;}
};

六.题目总结

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

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

相关文章

LangChain-12 Routing By Semantic Similarity 让GPT根据不明确的问题 自动选择工具集 根据语义自动路由

问题背景 平常我们设计程序的时候&#xff0c;会这么写&#xff1a; // 随便举例 String type paramDTO.getType(); if (type.equals("吃饭")) {// do } else if (type.equals("喝水")) {// do } else {// do }此时如果type传入的不是数字&#xff0c;那…

docker使用arthas基本教程

供参考也是自己的笔记 docker容器下使用遇到的问题&#xff1a;大致是连接不上1号进程 我这边主要的问题是用户权限问题&#xff0c;docker容器使用aaa用户启动&#xff0c;那个在docker容器内&#xff0c;需要使用aaa用于启动 docker 容器如何使用arthas #实现下载好arthas …

前端开发语言都有哪些?

前端开发主要涉及以下几种语言&#xff1a; HTML (HyperText Markup Language)&#xff1a;作为网页内容的骨架&#xff0c;定义了网页的结构和内容。是所有Web开发者必须掌握的基础语言。CSS (Cascading Style Sheets)&#xff1a;用于设置网页的样式和布局&#xff0c;包括字…

Python内置函数any()和ascii()详解

Python是一种高级编程语言&#xff0c;提供了丰富的内置函数来简化开发过程。其中&#xff0c;any()和ascii()是两个常用的内置函数&#xff0c;本文将深入探讨它们的用法和功能。 any()函数 any()函数是Python中的一个内置函数&#xff0c;用于判断可迭代对象中的元素是否全…

2604B吉时利2604B数字源表

181/2461/8938产品概述&#xff1a; 型号2604B用于台式应用&#xff0c;不包括TSP-Link、接触检查或数字I/O功能。关于系统使用&#xff0c;请参见型号2602B 吉时利2600B系列源表SMU仪器是业界领先的电流/电压源和测量解决方案&#xff0c;采用了吉时利第三代SMU技术。2600B系…

【Wbpack原理】基础流程解析,实现 mini-webpack

【Wbpack原理】基础流程解析&#xff0c;实现 mini-webpack ⛄&#xff1a;webpack 对前端同学来说并不陌生&#xff0c;它是我们学习前端工程化的第一站&#xff0c;在最开始的 vue-cli 中我们就可以发现它的身影。我们的 vue/react 项目是如何打包成 js 文件并在浏览器中运行…

计算机毕业设计java 基于Android的拼图游戏app

当今社会&#xff0c;随着电子信息技术的发展&#xff0c;电子游戏也成为人们日常生活的一部分。这种娱乐方式结合了日新月异的技术&#xff0c;在游戏软件中结合了多种复杂技术。拼图游戏流行在各种电子产品上&#xff0c;从计算机&#xff0c;掌上游戏机到如今的手机&#xf…

go 搭建api后台笔记

一、修改代理 修改成国内代理&#xff0c;是为了方便下载引用包 export GOPROXYhttps://goproxy.cn,direct二、写个例子 main.go package mainimport ("fmt""net/http""github.com/gin-gonic/gin" )func getPage(c *gin.Context) {page : c.…

山海鲸智慧交通:可视化技术助力城市交通管理升级

随着城市化进程的加速和汽车保有量的不断增加&#xff0c;交通拥堵、安全事故频发等问题日益凸显。在这样的背景下&#xff0c;智慧交通成为了解决城市交通难题的重要途径。山海鲸智慧交通可视化解决方案&#xff0c;以其创新的技术和卓越的性能&#xff0c;为城市交通管理提供…

STC8H8K64U 学习笔记 - 矩阵键盘

这里写自定义目录标题 环境说明引脚说明 矩阵键盘 环境说明 该内容仅针对我自己学习的开发板做的笔记&#xff0c;在实际开发中需要针对目标电路板的原理图进行针对性研究。 芯片&#xff1a;STC8H8K64U烧录软件&#xff1a;stc-isp-v6.92G编码工具&#xff1a;天问 引脚说明 …

1688详情API接口:解锁多元化应用场景java php c++

随着互联网的快速发展&#xff0c;数据交换和信息共享已成为企业日常运营不可或缺的一部分。在这样的背景下&#xff0c;API&#xff08;应用程序接口&#xff09;接口作为实现数据互通的重要工具&#xff0c;受到了越来越多企业的青睐。1688详情API接口作为阿里巴巴旗下的重要…

【算法每日一练]-动态规划(保姆级教程 篇17 状态压缩)

目录 今日知识点&#xff1a; 把状态压缩成j,dp每行i的布置状态&#xff0c;从i-1和i-2行进行不断转移 把状态压缩成j,dp每行i的布置状态&#xff0c;从i-1行进行状态匹配&#xff0c;然后枚举国王数转移 POJ1185&#xff1a;炮兵阵地 思路&#xff1a; 题目&#xff1a;互…

Mysql的四种索引实现方式

MySQL的索引实现方式主要包括以下四种&#xff1a; Btree索引&#xff08;B-Tree或BTree&#xff09; ○ 数据结构&#xff1a;Btree索引基于B树或B树数据结构实现。B树是一种自平衡的多路搜索树&#xff0c;每个节点包含多个键值对&#xff0c;并且所有数据都存储在叶子节点上…

ChatGPT技巧揭秘:学术论文写作全攻略

ChatGPT无限次数:点击直达 html ChatGPT技巧揭秘&#xff1a;学术论文写作全攻略 在当今数字化时代&#xff0c;如何写出优质的学术论文成为许多研究者关注的焦点。ChatGPT作为一款强大的自然语言处理工具&#xff0c;为学术论文的写作提供了全新的思路和技巧。本文将揭秘如…

TRIZ理论在创新实践中的优势体现在哪些地方?

当下&#xff0c;创新已成为推动企业和社会发展的关键动力。TRIZ&#xff0c;即发明问题解决理论。作为一套系统化的创新方法论&#xff0c;它通过分析大量专利和发明案例&#xff0c;总结出一套解决问题的通用方法和流程。那么&#xff0c;TRIZ理论在创新实践中的优势具体体现…

振弦采集仪在地下水位监测中的可行性研究与实践

振弦采集仪在地下水位监测中的可行性研究与实践 地下水位的监测对于水资源管理和地下水环境保护具有重要意义。传统的地下水位监测方法主要包括井水位计、压力传感器和雨水入渗监测等。然而&#xff0c;这些方法存在着一些局限性&#xff0c;如需要人工维护、监测周期长、监测…

KylinOS银河麒麟安装部署AI服务

KylinOS银河麒麟安装部署AI服务&#xff08;CPU版本&#xff09; 查看操作系统 [jnapp8160fcc7cf1b ~]$ nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Lance)Kernel: 6.2.0-36-genericBuild: Kylin Linux…

vue ts 应用梳理

文章目录 前言一、页面传值1.1 [props](https://cn.vuejs.org/guide/components/props.html)1.2 [emit](https://cn.vuejs.org/guide/components/events.html)1.3 [store](https://pinia.vuejs.org/zh/getting-started.html) 二、实时计算2.1 [watch](https://cn.vuejs.org/gui…

lwip问题

1.stm32F407VET6Freertoslwip,通过socket接口创建UDP链接&#xff0c;只能创建4个 lwipopt.h opt.h MEMP_NUM_UDP_PCB&#xff1a;定义可以创建的UDP连接个数 MEMP_NUM_TCP_PCB&#xff1a;定义可以创建的TCP连接个数 MEMP_NUM_TCP_PCB_LISTEN&#xff1a;可以创建listening T…

ArcGISPro 如何升级某项Python库且不影响其运行

升级包scipy 可以看出scipy当前版本是1.6.2 利用不依赖包升级 pip install --upgrade scipy --no-deps 结果 但是显示还是之前的版本