给定一组区间,对于每一个区间 i,检查是否存在一个区间 j,它的起始点大于或等于区间 i 的终点,这可以称为 j 在 i 的“右侧”。

对于任何区间,你需要存储的满足条件的区间 j 的最小索引,这意味着区间 j 有最小的起始点可以使其成为“右侧”区间。如果区间 j 不存在,则将区间 i 存储为 -1。最后,你需要输出一个值为存储的区间值的数组。

注意:

你可以假设区间的终点总是大于它的起始点。
你可以假定这些区间都不具有相同的起始点。
示例 1:

输入: [ [1,2] ]
输出: [-1]

解释:集合中只有一个区间,所以输出-1。

代码

class Solution {public int[] findRightInterval(int[][] intervals) {int n=intervals.length;int[][] in=new int[n][2];//记录下集合的起点的位置int[] res=new int[n];for(int i=0;i<n;i++){in[i][0]=intervals[i][0];in[i][1]=i;}Arrays.sort(in, new Comparator<int[]>() {//将起点排序@Overridepublic int compare(int[] o1, int[] o2) {return o1[0]-o2[0];}});for(int i=0;i<n;i++){int l=0,r=n-1;while (l<=r)//二分查找{int mid=(r-l)/2+l;if(in[mid][0]>=intervals[i][1])r=mid-1;else l=mid+1;}if(l==0||l==n) res[i]=-1;//找不到elseres[i]=in[l][1];}return res;}
}

leetcode436. 寻找右区间(二分法)相关推荐

  1. Leetcode 436.寻找右区间

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

  2. LeetCode 436. 寻找右区间(二分查找)

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

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

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

  4. 算法设计思想(6)— 二分法(二分法代码模板、寻找左侧边界二分法、寻找右侧边界二分法)

    1. 问题 [例题]循环输入,每组数据为给定 n 个元素的升序整型数组 nums 和一个值 target,要求实现一个函数查找 nums 中 target 的下标,如果查找不到则返回 -1. 2. 思 ...

  5. 区间二分法(Bisection Method)迭代求根的python程序

    迭代法的作用 许多复杂的求解问题,都可以转换成方程f(x)=0的求解问题.这一系列的解叫做方程的根.对于非线性方程的求解,在自变量范围内往往有多个解,我们将此变化区域分为多个小的子区间,对每个区间进行 ...

  6. leetcode 162. Find Peak Element | 162. 寻找峰值(二分法找局部最大值)

    题目 https://leetcode.com/problems/find-peak-element/ 题解 2021-7-21 16:28:31 更新版思路: 根据左神在 课上 说的,可以使用二分法 ...

  7. leetcode162. 寻找峰值(二分法)

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

  8. leetcode287. 寻找重复数(二分法)

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

  9. problem k: 查找某一个数_quot;细节魔鬼quot; 二分查找

    ❝ 二分查找,是一个高效,实用,且易理解的一个查找算法, 通常时间复杂度为O(lgn).局限性在于,待查找对象必须为有序的数组:数据量过小,优势不明显,数据量过大,数组大小受限于内存. 除此之外,二分 ...

最新文章

  1. 什么是ThreadLocal
  2. php 中文转拼音,可以只转首字母,可以设置utf8、gbk
  3. 常用的机器学习数据挖掘知识点【转】
  4. ABP从入门到精通(3):aspnet-zero-core 使用Redis缓存
  5. 深入理解 Git 的实现原理
  6. mysql 函数修改无效_MySQL:无效使用组函数
  7. deletefile失败 代码5怎么办_Go语言高级窍门与技巧,看完你也能写出高质量代码...
  8. C++按位异或运算符
  9. 解决 vim 报错:the imp module is deprecated in favour of importlib
  10. COPRA-for-AutoCAD 2005
  11. 微信投票python脚本_微信刷票Python脚本教程
  12. pythonQQ连连看秒杀脚本
  13. Codeforces Round #807 (Div. 2) A - D
  14. php网站页面显示源码,用PHP显示网站的源代码
  15. 气象预警信号图标设计中的坑
  16. 域名的解析及域名根服务器
  17. iphone浏览器不支持javascript中的new Date问题
  18. JWT Token、ID Token、Access Token、Refresh Token
  19. Mesos的未来DCOS已经明朗化
  20. FM1702sl终于调通小结

热门文章

  1. linux中标准I/O 文件I/O 及库
  2. python生成泊松分布随机数_泊松分布随机数
  3. XGBoost入门及实战
  4. [Apple开发者帐户帮助]八、管理档案(2)创建临时配置文件(iOS,tvOS,watchOS)...
  5. Python程序互斥体
  6. 再读TCP/IP网络7层协议
  7. flash中的渐变滤镜GradientGlowFilter
  8. 设计模式笔记(7)---适配器模式(结构型)
  9. openstack服务编排
  10. C#高级应用之CodeDomProvider引擎篇 .