LeetCode 436. 寻找右区间(二分查找)
1. 题目
给定一组区间,对于每一个区间 i,检查是否存在一个区间 j,它的起始点大于或等于区间 i 的终点,这可以称为 j 在 i 的“右侧”。
对于任何区间,你需要存储的满足条件的区间 j 的最小索引,这意味着区间 j 有最小的起始点可以使其成为“右侧”区间。
如果区间 j 不存在,则将区间 i 存储为 -1。
最后,你需要输出一个值为存储的区间值的数组。
注意:
你可以假设区间的终点总是大于它的起始点。
你可以假定这些区间都不具有相同的起始点。示例 1:
输入: [ [1,2] ]
输出: [-1]
解释:集合中只有一个区间,所以输出-1。示例 2:
输入: [ [3,4], [2,3], [1,2] ]
输出: [-1, 0, 1]
解释:对于[3,4],没有满足条件的“右侧”区间。
对于[2,3],区间[3,4]具有最小的“右”起点;
对于[1,2],区间[2,3]具有最小的“右”起点。示例 3:
输入: [ [1,4], [2,3], [3,4] ]
输出: [-1, 2, -1]
解释:对于区间[1,4]和[3,4],没有满足条件的“右侧”区间。
对于[2,3],区间[3,4]有最小的“右”起点。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-right-interval
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 找每个区间的右端点,在所有左端点里的位置,找到大于等于右端点的第一个
- 利用 map 有序,key存储左端点值,value存储下标idx
class Solution {public:vector<int> findRightInterval(vector<vector<int>>& intervals) {map<int,int> m;//左端点,对应下标idxfor(int i = 0; i < intervals.size(); ++i)m[intervals[i][0]] = i;vector<int> ans(intervals.size());for(int i = 0; i < intervals.size(); ++i){auto it = m.lower_bound(intervals[i][1]);if(it == m.end())ans[i] = -1;elseans[i] = it->second;}return ans;}
};
216 ms 23.3 MB
LeetCode 436. 寻找右区间(二分查找)相关推荐
- Leetcode 436.寻找右区间
寻找右区间 给定一组区间,对于每一个区间 i,检查是否存在一个区间 j,它的起始点大于或等于区间 i 的终点,这可以称为 j 在 i 的"右侧". 对于任何区间,你需要存储的满足条 ...
- leetcode 436. Find Right Interval | 436. 寻找右区间(二分查找不小于某值的第一个位置)
题目 https://leetcode.com/problems/find-right-interval/ 题解 这题考察点不难,就是个普通的二分查找.详细过程是: 因为 start 是唯一的,所以先 ...
- LeetCode 162. 寻找峰值(二分查找)
1. 题目 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数组可能包含多个峰值,在这种情况下,返回任何一 ...
- 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)
LeetCode刷题笔记:二分查找(简单) 学算法,刷力扣,加油卷,进大厂! 题目描述 涉及算法 题目解答 学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 给定一个 n 个元素有序的(升序) ...
- 经典算法之右边界二分查找法(俗称基本右边界二分搜索法)
经典算法之右边界二分查找法(俗称基本右边界二分搜索法) 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 经典算法之右边界二分查找法(俗称基本右边界二分搜索法) 前言 一.什 ...
- [Leedcode][JAVA][第287题][寻找重复数][HashSet][二分查找][快慢指针]
[问题描述][中等] 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数.假设只有一个重复的整数,找出这个重复的数.输入: ...
- LeetCode算法题4:二分查找及扩展应用
文章目录 前言 一.二分查找 二.第一个错误的版本 三.搜索插入位置 总结 前言 Leetcode算法系列:https://leetcode-cn.com/study-plan/algorithms/ ...
- LeetCode面试刷题技巧-二分查找算法代码思路解析
二分查找的思想 提及二分查找算法,我想大部分人都不陌生,就算不是学计算机的,基本上也都使用过二分查找的思想,不信的话,且听我慢慢为你道来. 不知道你有没有玩过这样一个游戏,猜数字.就是说一个人心里想了 ...
- leetcode436. 寻找右区间(二分法)
给定一组区间,对于每一个区间 i,检查是否存在一个区间 j,它的起始点大于或等于区间 i 的终点,这可以称为 j 在 i 的"右侧". 对于任何区间,你需要存储的满足条件的区间 j ...
最新文章
- Tensorflow中的mnist例子
- 无招胜有招之语言基础
- 服务器好玩的项目_GitHub 上有什么好玩的项目?(附地址)
- python找不到指定的模块是什么意思_Python找不到指定的模块
- 海洋CMS v6.53 v6.54命令执行
- 【秋招面经】全网最全大华前端题目总结
- PhysioBank简介
- 基于阶梯灰度图法的空间光调制器相位延迟测量
- 前端如何实现一键截图功能?
- Harbor可视化docker私有仓库
- [题解] 洛谷 P3603 雪辉
- 9.9 力扣652. 寻找重复的子树
- win10开机Chrome自启全屏展示特定网站
- 什么是NTP时间服务器
- Vacuum使用心得
- Linux下镜像源配置
- CTRL+C复制和CTRL+V粘贴键不能使用的解决办法
- NXP之i.MX RT系列单片机上电操作
- 阅读这 5 本数据分析书籍,开启您的数据分析职业生涯
- 【解决方案】如何基于EasyCVR智能分析技术构建城市智慧警务可视化综合监管平台?