码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] Data Stream as Disjoint Intervals 分离区间的数据流

时间:2016-06-01 06:48:06      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

 

Given a data stream input of non-negative integers a1, a2, ..., an, ..., summarize the numbers seen so far as a list of disjoint intervals.

For example, suppose the integers from the data stream are 1, 3, 7, 2, 6, ..., then the summary will be:

[1, 1]
[1, 1], [3, 3]
[1, 1], [3, 3], [7, 7]
[1, 3], [7, 7]
[1, 3], [6, 7]

Follow up:
What if there are lots of merges and the number of disjoint intervals are small compared to the data stream‘s size?

Credits:
Special thanks to @yunhong for adding this problem and creating most of the test cases.

 

这道题说有个数据流每次提供一个数字,然后让我们组成一系列分离的区间,这道题跟之前那道Insert Interval很像,思路也很像,每进来一个新的数字val,我们都生成一个新的区间[val, val],然后将其插入到当前的区间里,注意分情况讨论,无重叠,相邻,和有重叠分开讨论处理,参见代码如下:

 

class SummaryRanges {
public:
    /** Initialize your data structure here. */
    SummaryRanges() {}
    
    void addNum(int val) {
        Interval cur(val, val);
        vector<Interval> res;
        int pos = 0;
        for (auto a : v) {
            if (cur.end + 1 < a.start) {
                res.push_back(a);
            } else if (cur.start > a.end + 1) {
                res.push_back(a);
                ++pos;
            } else if (cur.start - 1 == a.end) {
                cur.start = a.start;
            } else if (cur.end + 1 == a.start) {
                cur.end = a.end;
            } else {
                cur.start = min(cur.start, a.start);
                cur.end = max(cur.end, a.end);
            }
        }
        res.insert(res.begin() + pos, cur);
        v = res;
    }
    
    vector<Interval> getIntervals() {
        return v;    
    }
    
private:
    vector<Interval> v;
};


类似题目:

Insert Interval

 

参考资料:

https://leetcode.com/discuss/105742/simple-java-solution-using-insert-interval

 

LeetCode All in One 题目讲解汇总(持续更新中...)

[LeetCode] Data Stream as Disjoint Intervals 分离区间的数据流

标签:

原文地址:http://www.cnblogs.com/grandyang/p/5548284.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!