LeetCode 352. 将数据流变为多个不相交区间(map二分查找)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 352. 将数据流变为多个不相交区间(map二分查找)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
給定一個非負整數的數據流輸入 a1,a2,…,an,…,將到目前為止看到的數字總結為不相交的區間列表。
例如,假設數據流中的整數為 1,3,7,2,6,…,每次的總結為:
[1, 1] [1, 1], [3, 3] [1, 1], [3, 3], [7, 7] [1, 3], [7, 7] [1, 3], [6, 7]進階:
如果有很多合并,并且與數據流的大小相比,不相交區間的數量很小,該怎么辦?
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/data-stream-as-disjoint-intervals
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 題目不難,二分查找 + if else 就可以了(看找到的位置前后能否合并),見注釋
56 ms 29.1 MB C++
題解區還有比較暴力的做法,直接全部插入set,最后順序整理區間
class SummaryRanges { public:/** Initialize your data structure here. */set<int> ans;SummaryRanges() {}void addNum(int val) {ans.insert(val);}vector<vector<int>> getIntervals() {vector<vector<int>> res;int left = *ans.begin();int right = *ans.begin();for (auto it = ans.begin(); it != ans.end(); it++) {if (*it > right + 1) {res.push_back({left, right});left = *it;}right = *it;}res.push_back({left, right});return res;} };作者:qia-si-ming-yue-qing-feng 鏈接:https://leetcode-cn.com/problems/data-stream-as-disjoint-intervals/solution/bao-li-mei-xue-setyong-fa-by-qia-si-ming-yue-qing-/ 來源:力扣(LeetCode) 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。其時間 96 ms 31.7 MB C++,我的解法稍優一些
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 352. 将数据流变为多个不相交区间(map二分查找)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Kaggle] Spam/Ham Em
- 下一篇: LeetCode 1156. 单字符重复