来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/find-right-interval

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目大意是这样的
数组中的元素由一个区间组成(包含一个左端点和右端点),左端点一定是唯一的
找到每个元素的右区间
举个例子
假设区间A为[1,2],那么区间A的右区间最好就是[2,3]
也就是说区间A右区间的左端点是大于等于区间A右端点的最小数

二分思路


从暴力算法上看,开销最大的部分就是枚举右区间
如果事先记录数组intervals的左端点并排序,那么右区间就可以二分(有序就可以二分)

代码如下


class Solution {
public:
vector<int> findRightInterval(vector<vector<int>>& intervals) {
vector<int> res; // intervals的长度为1时要做特判
if(intervals.size()==1){
res.push_back(-1);
return res;
}
// 记录intervals中每个区间的左端点和该端点在哪个区间
vector<pair<int,int>> tmp; for(int i=0;i<intervals.size();i++)
tmp.push_back({intervals[i][0],i});
// 将这些端点排序
sort(tmp.begin(),tmp.end());
for(int i=0;i<intervals.size();i++){
int l=0,r=tmp.size()-1,mid;
// 二分寻找对应的左端点
while(l<r){
mid = (l+r)/2;
if(tmp[mid].first>=intervals[i][1])r=mid;
else l=mid+1;
}
// 如果找到的左端点小于区间i的右端点就记录左端点所在区间
// 否则记为-1 表示区间i没有右区间
if(tmp[l].first>=intervals[i][1])res.push_back(tmp[l].second);
else res.push_back(-1);
} return res;
}
};

最新文章

  1. 第一种SUSE Linux IP设置方法
  2. Python中的可迭代对象与迭代器对象
  3. NGUI之UIRoot
  4. [Leetcode][JAVA] Best Time to Buy and Sell Stock I, II, III
  5. int *p()与int (*p)()的区别
  6. enum与typedef enum的用法
  7. SQL Server常见基础操作
  8. 菜鸟的MySQL学习笔记(二)
  9. sql第一天
  10. ggplot2 theme相关设置—文本调整
  11. spring boot2.0.4集成druid,用jmeter并发测试工具调用接口,druid查看监控的结果
  12. XVII Open Cup named after E.V. Pankratiev. Grand Prix of America (NAIPC-2017)
  13. IIS 网站 HTTP 转 HTTPS
  14. TypeError: while_loop() got an unexpected keyword argument &#39;maximum_iterations&#39;
  15. Layui上传图片 带接口
  16. lfs(systemv版本)学习笔记-第1页
  17. IOS 多文件上传 Java web端(后台) 使用List&lt;MultipartFile&gt; 接收出现的问题
  18. Rails 5 Test Prescriptions 第8章 Integration Testing with Capybara and Cucumber
  19. 洛谷P2464 [SDOI2008] 郁闷的小j [分块]
  20. Linux 为FTP 服务器添加iptables规则--案例分析

热门文章

  1. quasar + uni-app混合打包APP
  2. Datax源码改造关键步骤记录
  3. 如何在 Mac 和虚拟机上安装 macOS Big Sur、Monterey 和 Ventura
  4. iPhone x 的区别
  5. HMS Core 视频编辑服务开放模板能力,助力用户一键Get同款酷炫视频
  6. 【Redis】哨兵初始化和主观下线
  7. 左右手切换工具xmouse v1.2版本发布
  8. BUUCTF-神秘龙卷风
  9. dubbox、zookeeper BUG记录
  10. SQL报了一个不常见的错误,让新来的实习生懵了