标签:mission contain auto sea input either where pair bsp
Given a set of intervals, for each of the interval i, check if there exists an interval j whose start point is bigger than or equal to the end point of the interval i, which can be called that j is on the "right" of i.
For any interval i, you need to store the minimum interval j‘s index, which means that the interval j has the minimum start point to build the "right" relationship for interval i. If the interval j doesn‘t exist, store -1 for the interval i. Finally, you need output the stored value of each interval as an array.
Note:
Example 1:
Input: [ [1,2] ] Output: [-1] Explanation: There is only one interval in the collection, so it outputs -1.
Example 2:
Input: [ [3,4], [2,3], [1,2] ] Output: [-1, 0, 1] Explanation: There is no satisfied "right" interval for [3,4]. For [2,3], the interval [3,4] has minimum-"right" start point; For [1,2], the interval [2,3] has minimum-"right" start point.
Example 3:
Input: [ [1,4], [2,3], [3,4] ] Output: [-1, 2, -1] Explanation: There is no satisfied "right" interval for [1,4] and [3,4]. For [2,3], the interval [3,4] has minimum-"right" start point.
Approach #1:
/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} * }; */ class Solution { public: vector<int> findRightInterval(vector<Interval>& intervals) { int len = intervals.size(); vector<int> ans; map<int, int> temp; for (int i = 0; i < len; ++i) { temp[intervals[i].start] = i; } for (int i = 0; i < len; ++i) { auto it = temp.lower_bound(intervals[i].end); if (it != temp.end()) ans.push_back(it->second); else ans.push_back(-1); } return ans; } };
标签:mission contain auto sea input either where pair bsp
原文地址:https://www.cnblogs.com/ruruozhenhao/p/9919028.html