LeetCode寻找右区间
Posted ♥追着子王小奔跑的顶♥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode寻找右区间相关的知识,希望对你有一定的参考价值。
【问题】
给定一组区间,对于每一个区间 i,检查是否存在一个区间 j,它的起始点大于或等于区间 i 的终点,这可以称为 j 在 i 的“右侧”。
对于任何区间,你需要存储的满足条件的区间 j 的最小索引,这意味着区间 j 有最小的起始点可以使其成为“右侧”区间。如果区间 j 不存在,则将区间 i 存储为 -1。最后,你需要输出一个值为存储的区间值的数组。
示例 1: 输入: [ [1,2] ] 输出: [-1]
【代码】
class Solution { public: vector<int> findRightInterval(vector<vector<int>>& intervals) { if (intervals.size() <= 1) return {-1}; vector<int> res; map<int, int> record; // 使用low_bound res.reserve(intervals.size()); for(int i = 0; i < intervals.size(); i++) { record[intervals[i][0]] = i; } for(auto val: intervals) { auto it = record.lower_bound(val[1]); if (it != record.end()) { res.push_back(it->second); } else res.push_back(-1); } return res; } };
以上是关于LeetCode寻找右区间的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 668. 乘法表中第k小的数 / 462. 最少移动次数使数组元素相等 II / 436. 寻找右区间