当前位置: 首页 > news >正文

力扣(LeetCode)436. 寻找右区间(2023.03.10)

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

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

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

示例 1:

输入:intervals = [[1,2]]
输出:[-1]
解释:集合中只有一个区间,所以输出-1。

示例 2:

输入:intervals = [[3,4],[2,3],[1,2]]
输出:[-1,0,1]
解释:对于 [3,4] ,没有满足条件的“右侧”区间。
对于 [2,3] ,区间[3,4]具有最小的“右”起点;
对于 [1,2] ,区间[2,3]具有最小的“右”起点。

示例 3:

输入:intervals = [[1,4],[2,3],[3,4]]
输出:[-1,2,-1]
解释:对于区间 [1,4] 和 [3,4] ,没有满足条件的“右侧”区间。
对于 [2,3] ,区间 [3,4] 有最小的“右”起点。

提示:

1 <= intervals.length <= 2 * 104
intervals[i].length == 2
-106 <= starti <= endi <= 106
每个间隔的起点都 不相同

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/find-right-interval

方法一:二分查找

C++提交内容:

class Solution {
public:vector<int> findRightInterval(vector<vector<int>>& intervals) {unordered_map<int, int> starts_map;vector<int> starts;for (int i = 0; i < intervals.size(); ++i) {starts_map[intervals[i][0]] = i;starts.push_back(intervals[i][0]);}sort(starts.begin(), starts.end());vector<int> res;for (auto& interval : intervals) {int idx = higher_find(starts, interval[1]);res.push_back(idx == -1 ? -1 : starts_map[starts[idx]]);}return res;}int higher_find(vector<int>& starts, int target) {if (target > starts[starts.size() - 1])return -1;int left = 0;int right = starts.size() - 1;while (left < right) {int mid = left + (right - left) / 2;if (starts[mid] >= target) {right = mid;} else {left = mid + 1;}}return left;}
};
http://www.lryc.cn/news/38239.html

相关文章:

  • 已解决Servlet中Request请求参数中文乱码的问题
  • 【flask】URL和视图映射
  • Python实现性能测试(locust)
  • 【数论】试除法判断质数,分解质因数,筛质数
  • 【C++】红黑树
  • 【剧前爆米花--爪哇岛寻宝】进程的调度以及并发和并行,以及PCB中属性的详解。
  • 网络的瓶颈效应
  • 【C++进阶】四、红黑树(三)
  • Spring——AOP切入点表达式和AOP通知类型
  • Hadoop学习:Yarn
  • Spring Data JPA
  • java List报错Method threw ‘java.lang.UnsupportedOperationException‘ exception. 解决
  • 数据结构-用栈实现队列
  • 第十四章 从 Windows 客户端控制 IRIS
  • 数据结构---双链表
  • Windows 环境安装Scala详情
  • C++ Qt自建网页浏览器
  • Flink从入门到精通系列(四)
  • Nginx 配置实例-反向代理案例一
  • 为什么北欧的顶级程序员数量远超中国?
  • vuex getters的作用和使用(求平均年龄),以及辅助函数mapGetters
  • 20230311给Ubuntu18.04下的GTX1080M安装驱动
  • 2023腾讯面试真题:
  • 23种设计模式-建造者模式(Android应用场景介绍)
  • English Learning - L2 语音作业打卡 双元音 [ʊə] [eə] Day17 2023.3.9 周四
  • 【动态规划】多重背包问题,分组背包问题
  • JAVA面向对象特征之——封装
  • 【数据结构】二叉树相关OJ题
  • Windows安装Hadoop
  • ICG-Hydrazide,吲哚菁绿-酰肼,ICG-HZ结构式,溶于二氯甲烷等部分有机溶剂,