【问题】
给定一组区间,对于每一个区间 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; } };