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. 寻找右区间(二分查找)相关推荐

  1. Leetcode 436.寻找右区间

    寻找右区间 给定一组区间,对于每一个区间 i,检查是否存在一个区间 j,它的起始点大于或等于区间 i 的终点,这可以称为 j 在 i 的"右侧". 对于任何区间,你需要存储的满足条 ...

  2. leetcode 436. Find Right Interval | 436. 寻找右区间(二分查找不小于某值的第一个位置)

    题目 https://leetcode.com/problems/find-right-interval/ 题解 这题考察点不难,就是个普通的二分查找.详细过程是: 因为 start 是唯一的,所以先 ...

  3. LeetCode 162. 寻找峰值(二分查找)

    1. 题目 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数组可能包含多个峰值,在这种情况下,返回任何一 ...

  4. 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)

    LeetCode刷题笔记:二分查找(简单) 学算法,刷力扣,加油卷,进大厂! 题目描述 涉及算法 题目解答 学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 给定一个 n 个元素有序的(升序) ...

  5. 经典算法之右边界二分查找法(俗称基本右边界二分搜索法)

    经典算法之右边界二分查找法(俗称基本右边界二分搜索法) 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 经典算法之右边界二分查找法(俗称基本右边界二分搜索法) 前言 一.什 ...

  6. [Leedcode][JAVA][第287题][寻找重复数][HashSet][二分查找][快慢指针]

    [问题描述][中等] 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数.假设只有一个重复的整数,找出这个重复的数.输入: ...

  7. LeetCode算法题4:二分查找及扩展应用

    文章目录 前言 一.二分查找 二.第一个错误的版本 三.搜索插入位置 总结 前言 Leetcode算法系列:https://leetcode-cn.com/study-plan/algorithms/ ...

  8. LeetCode面试刷题技巧-二分查找算法代码思路解析

    二分查找的思想 提及二分查找算法,我想大部分人都不陌生,就算不是学计算机的,基本上也都使用过二分查找的思想,不信的话,且听我慢慢为你道来. 不知道你有没有玩过这样一个游戏,猜数字.就是说一个人心里想了 ...

  9. leetcode436. 寻找右区间(二分法)

    给定一组区间,对于每一个区间 i,检查是否存在一个区间 j,它的起始点大于或等于区间 i 的终点,这可以称为 j 在 i 的"右侧". 对于任何区间,你需要存储的满足条件的区间 j ...

最新文章

  1. Tensorflow中的mnist例子
  2. 无招胜有招之语言基础
  3. 服务器好玩的项目_GitHub 上有什么好玩的项目?(附地址)
  4. python找不到指定的模块是什么意思_Python找不到指定的模块
  5. 海洋CMS v6.53 v6.54命令执行
  6. 【秋招面经】全网最全大华前端题目总结
  7. PhysioBank简介
  8. 基于阶梯灰度图法的空间光调制器相位延迟测量
  9. 前端如何实现一键截图功能?
  10. Harbor可视化docker私有仓库
  11. [题解] 洛谷 P3603 雪辉
  12. 9.9 力扣652. 寻找重复的子树
  13. win10开机Chrome自启全屏展示特定网站
  14. 什么是NTP时间服务器
  15. Vacuum使用心得
  16. Linux下镜像源配置
  17. CTRL+C复制和CTRL+V粘贴键不能使用的解决办法
  18. NXP之i.MX RT系列单片机上电操作
  19. 阅读这 5 本数据分析书籍,开启您的数据分析职业生涯
  20. 【解决方案】如何基于EasyCVR智能分析技术构建城市智慧警务可视化综合监管平台?

热门文章

  1. 大数据之SparkSQL简介及DataFrame的使用
  2. python *args和**kwargs以及序列解包
  3. python问题汇总
  4. 华为鸿蒙消费者,王成录谈鸿蒙挑战和华为消费者业务崛起
  5. linux kill命令信号,Linux kill 命令详解
  6. oracle中的merge into用法解析
  7. Python网络数据采集系列-------概述
  8. 批量裁剪GIS数据(包含GDB,MDB,Shp)
  9. VB6调用API打开目标文件所在文件夹且选中目标文件
  10. 模拟纳指stock的小例子