leetcode 二分查找·系统掌握 寻找右区间

题目:

给你一个区间数组 intervals ,其中 intervals[i] = [starti, endi] ,且每个 starti 都 不同 。

区间 i 的 右侧区间 可以记作区间 j ,并满足 startj >= endi ,且 startj 最小化 。注意 i 可能等于 j 。

返回一个由每个区间 i 的 右侧区间 在 intervals 中对应下标组成的数组。如果某个区间 i 不存在对应的 右侧区间 ,则下标 i 处的值设为 -1 。

题解:

对于每个区间,只需查找是否有某个区间的start大于等于当前的区间的end即可。

vector<int> findRightInterval(vector<vector<int>>& intervals) {map<int,int>m;for(int i=0;i<intervals.size();i++){m[intervals[i][0]]=i;}vector<int>ans(intervals.size(),-1);auto cmp=[&](pair<int>a,int vale){return a.first}for(int i=0;i<intervals.size();i++){auto iter=lower_bound(m.begin(),m.end(),intervals[i][1],cmp));if(iter !=m.end()){ans[i]=iter->second;}}return ans;}

题后反思:

做完这题让我思考,使用二分时需要明确二分查找的对象是谁,在这个对象中查找的值是谁。

明白这样一个问题在写二分题目时,思路才会越来越来清晰。

本题的查找的对象应该是所有的区间的start,在这个对象中要查找的值是大于等于当前区间end的值,因为要进行二分查找,所以就将所有区间的end单独拿出来排序以便进行二分查找。

在map中使用lower_bound函数:m.lower_bound(target);返回第一个键大于等于target的迭代器。

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

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

相关文章

解锁LLMs的“思考”能力:Chain-of-Thought(CoT) 技术推动复杂推理的新发展

1.简介 Chain-of-Thought(CoT)是一种改进的Prompt技术&#xff0c;目的在于提升大模型LLMs在复杂推理任务上的表现&#xff0c;如算术推理&#xff08;arithmetic reasoning&#xff09;、常识推理&#xff08;commonsense reasoning&#xff09;、符号推理&#xff08;symbol…

数据结构--顺序表(图文)

顺序表的概念和特点 顺序表是一种线性数据结构&#xff0c;它由一组数据元素构成&#xff0c;这些元素具有相同的特性&#xff0c;并按照一定的顺序排列。在顺序表中&#xff0c;数据元素通常存储在连续的内存空间中&#xff0c;这使得通过索引可以直接访问到表中的任意元素。…

tiaoshixitong

data_interval : 当是ubus 时 重新赋值为 3&#xff1b;当是ws 时 重新赋值为 20&#xff1b; 1. 如何理解data_tik &#xff1f; 在函数can_packet_check_timer 定时can发送函数里面&#xff0c;data_tik 作为倒计时时间&#xff0c;当倒计时间到&#xff0c;则发送。…

Nuxt3页面开发实战探索

title: Nuxt3页面开发实战探索 date: 2024/6/19 updated: 2024/6/19 author: cmdragon excerpt: 摘要&#xff1a;这篇文章是关于Nuxt3页面开发实战探索的。它介绍了Nuxt3的基础入门&#xff0c;安装与配置&#xff0c;项目结构&#xff0c;内置组件与功能&#xff0c;以及页…

Maven 的生命周期详解

Maven 是目前最流行的项目管理和构建工具之一&#xff0c;广泛应用于 Java 开发项目中。它通过一系列约定和配置&#xff0c;极大地简化了项目的构建、依赖管理和生命周期管理。其中&#xff0c;Maven 的生命周期是其核心概念之一&#xff0c;贯穿了项目从构建、测试、打包到部…

笔记本Win + v剪贴板打开失效问题解决

使用快捷键winv打开剪贴板时&#xff0c;突然没有了反应&#xff0c;原因是explorer.exe程序占用了winv键。解决方法&#xff1a; 1、管理员身份运行powershell 2、先杀掉explorer.exe程序&#xff1a;taskkill /f /im explorer.exe 3、重启explorer.exe程序 4、再使用winv …

Mybatis快速批量插入10万条数据实战

使用Mybatis大概有以下4种常见插入方法 1.使用for循环&#xff0c;每次执行一次insert插入(效率低不推荐) 2.使用MyBatis的标签遍历插入(效率低不推荐) 3.使用Mybatis&#xff0c;纯sql插入(推荐,效率最高) 4.使用 SqlSessionFactory&#xff0c;每一批数据执行一次提交(重点推…

变声方法大公开,变女声很自然的3款变声器推荐,值得收藏

将男声变成女声并且要很自然的变声器有吗&#xff1f;很多喜欢玩游戏的小伙伴们在进行游戏连麦时&#xff0c;可能为了增加趣味&#xff0c;想要试试变成女声来交流&#xff0c;或者喜欢视频剪辑创作的小伙伴们在进行视频配音时&#xff0c;不想用自己的声音出镜&#xff0c;需…

市值飙升!超微软、苹果,英伟达成为全球市值最高上市公司

KlipC报道&#xff1a;当地时间6月18日&#xff0c;英伟达股价再度大涨&#xff0c;盘后股价上涨3.51%&#xff0c;总市值达3.335万亿美元&#xff0c;报135.58美元再刷历史新高&#xff0c;超微软、苹果成为全球市值最高的上市公司。 值得一提的是&#xff0c;在本月初&#x…

vue3面试题八股集合——2024

vue3比vue2有什么优势&#xff1f; 性能更好&#xff0c;打包体积更小&#xff0c;更好的ts支持&#xff0c;更好的代码组织&#xff0c;更好的逻辑抽离&#xff0c;更多的新功能 描述Vu3生命周期 Options API的生命周期&#xff1a; beforeCreate: 在实例初始化之后、数据观…

深入理解AQS:Java并发编程中的核心组件

目录 AQS简介AQS的设计思路AQS的核心组成部分 状态&#xff08;State&#xff09;同步队列&#xff08;Sync Queue&#xff09;条件队列&#xff08;Condition Queue&#xff09; AQS的内部实现 节点&#xff08;Node&#xff09;锁的获取与释放 独占锁共享锁 条件变量 AQS的应…

Linux top 命令使用教程

转载请标明出处&#xff1a;https://blog.csdn.net/donkor_/article/details/139775547 文章目录 一、top 是什么二、top的基础语法三、top输出信息解读 一、top 是什么 Linux top 是一个在Linux和其他类 Unix 系统上常用的实时系统监控工具。它提供了一个动态的、交互式的实时…

数据库系统

数据库系统概论 数据库系统概论是一门研究如何设计、实现、管理和维护数据库的学科&#xff0c;它是计算机科学的重要分支&#xff0c;主要关注数据的组织、存储和处理。数据库系统的核心组成部分包括以下几个方面&#xff1a; 数据库&#xff08;Database&#xff09;&#…

云计算【第一阶段(16)】安装及管理程序

目录 一、linux 应用程序基础 1.1、应用程序与系统命令的关系 1.2、典型应用程序的目录结构 1.3、常见的软件包封装类型 二、RPM软件包管理工具 2.1、rpm命令的格式 2.2、安装&#xff0c;升级&#xff0c;卸载 rpm软件包 安装软件包 升级软件包 卸载软件包 查询软件…

Python 学习 第三册 第10章 一些简单的算法

---用教授的方式学习。 目录 10.1 搜索算法 10.1.1 线性搜索与间接引用元素 10.1.2 二分查找和利用假设 10.2 排序算法 10.2.1 归并排序 10.2.2 将函数用作参数 10.3 散列表 10.1 搜索算法 本节会研究两种搜索列表的算法,每种方法都满足以下规范: def search(L, e)…

Android OTA 升级基础知识详解+源码分析

前言&#xff1a; 本文仅仅对OTA升级的几种方式的概念和运用进行总结&#xff0c;仅在使用层面对其解释。需要更详细的内容我推荐大神做的全网最详细的讲解&#xff1a; https://blog.csdn.net/guyongqiangx/article/details/129019303?spm1001.2014.3001.5502 三种升级方式…

前端高级架构师课程(总共111门课程,1150GB)

由阿里P8前端架构师亲自精心筛选整理的全网最新最具价值的前端进阶学习课程&#xff01; 培训机构原版教程&#xff01; 课程知识点和一线大厂完美匹配&#xff01; 所有课程资源完整成套&#xff0c;不残缺&#xff0c;不拼凑&#xff0c;不拆开乱发&#xff01; 这系列课程包…

JavaScript-拓展简单和引用数据类型

学习目标&#xff1a; 掌握拓展简单和引用数据类型 学习内容&#xff1a; 拓展-术语解释拓展-基本数据类型和引用数据类型 拓展-术语解释&#xff1a; 拓展-基本数据类型和引用数据类型&#xff1a; 简单类型又叫做基本数据类型或者值类型&#xff0c;复杂类型又叫做引用类型…

第一百一十一节 Java面向对象设计 - Java泛型方法和构造函数

Java面向对象设计 - Java泛型方法和构造函数 泛型方法 我们可以在方法声明中定义类型参数&#xff0c;它们在方法的返回类型之前的尖括号中指定。 包含泛型方法声明的类型不必是泛型类型。 我们可以在非静态方法声明中使用为泛型类型指定的类型参数。 例子 以下代码显示如…

如何快速在一台新电脑上安装 Python 环境

一、下载miniconda 1.下载 我们可以在清华大学开源软件镜像站下载最新版本的miniconda。如&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py38_4.9.2-Windows-x86_64.exe 2.安装 双击exe文件安装&#xff0c;如果没有特殊的需求&#x…