?LeetCode刷題實(shí)戰(zhàn)436:尋找右區(qū)間
You are given an array of intervals, where intervals[i] = [starti, endi] and each starti is unique.
The right interval for an interval i is an interval j such that startj >= endi and startj is minimized.
Return an array of right interval indices for each interval i. If no right interval exists for interval i, then put -1 at index i.
示例
示例 1:
輸入:intervals = [[1,2]]
輸出:[-1]
解釋:集合中只有一個(gè)區(qū)間,所以輸出-1。
示例 2:
輸入:intervals = [[3,4],[2,3],[1,2]]
輸出:[-1, 0, 1]
解釋:對于 [3,4] ,沒有滿足條件的“右側(cè)”區(qū)間。
對于 [2,3] ,區(qū)間[3,4]具有最小的“右”起點(diǎn);
對于 [1,2] ,區(qū)間[2,3]具有最小的“右”起點(diǎn)。
示例 3:
輸入:intervals = [[1,4],[2,3],[3,4]]
輸出:[-1, 2, -1]
解釋:對于區(qū)間 [1,4] 和 [3,4] ,沒有滿足條件的“右側(cè)”區(qū)間。
對于 [2,3] ,區(qū)間 [3,4] 有最小的“右”起點(diǎn)。
解題
class?Solution?{
public:
????vector<int> findRightInterval(vector<vector<int>>& intervals) {
????????map<int,int> m;//左端點(diǎn),對應(yīng)下標(biāo)idx
????????for(int?i = 0; i < intervals.size(); ++i)
??????????m[intervals[i][0]] = i;
????????vector<int> ans(intervals.size());
????????for(int?i = 0; i < intervals.size(); ++i)
????????{
????????????auto?it = m.lower_bound(intervals[i][1]);
????????????if(it == m.end())
????????????????ans[i] = -1;
????????????else
????????????????ans[i] = it->second;
????????}
????????return?ans;
????}
};
LeetCode1-420題匯總,希望對你有點(diǎn)幫助!
LeetCode刷題實(shí)戰(zhàn)421:數(shù)組中兩個(gè)數(shù)的最大異或值
LeetCode刷題實(shí)戰(zhàn)422:有效的單詞方塊
LeetCode刷題實(shí)戰(zhàn)423:從英文中重建數(shù)字
LeetCode刷題實(shí)戰(zhàn)424:替換后的最長重復(fù)字符
LeetCode刷題實(shí)戰(zhàn)425:單詞方塊
LeetCode刷題實(shí)戰(zhàn)426:將二叉搜索樹轉(zhuǎn)化為排序的雙向鏈表
LeetCode刷題實(shí)戰(zhàn)427:建立四叉樹
LeetCode刷題實(shí)戰(zhàn)428:序列化和反序列化 N 叉樹
LeetCode刷題實(shí)戰(zhàn)429:N 叉樹的層序遍歷
LeetCode刷題實(shí)戰(zhàn)430:扁平化多級雙向鏈表
LeetCode刷題實(shí)戰(zhàn)431:將 N 叉樹編碼為二叉樹
LeetCode刷題實(shí)戰(zhàn)432:全 O(1) 的數(shù)據(jù)結(jié)構(gòu)
LeetCode刷題實(shí)戰(zhàn)433:最小基因變化
LeetCode刷題實(shí)戰(zhàn)434:字符串中的單詞數(shù)
LeetCode刷題實(shí)戰(zhàn)435:無重疊區(qū)間
