将数据流变为多个不相交区间
题目
给定一个非负整数的数据流输入a1,a2,…,an,…
,将到目前为止看到的数字总结为不相交的区间列表。
例如,假设数据流中的整数为 1,3,7,2,6,…
,每次的总结为:
1 | [1, 1] |
分析
很明显,题目中涉及到数据的插入,数据的排序,数据区间的合并。
- 当插入的数据在已存在的数据区间时,不插入,例如已存在
[1, 4]
,则不管数据流中会出现的1, 2, 3, 4
; - 当插入的数据不在已存在的数据区间时,插入该数据,怎么插?
2.1 首先插入的数据按顺序排列,每输入一个新的数据,找到其在数据区间列表中的位置;
2.2 其次,若其位置前后位置的数据都不与此数据相邻(相差1),则插入两个重复的数据;
2.3 若其位置前后位置的数据与此数据相邻,则做区间合并,
代码
按照分析,首先用c
实现了一波
1 | typedef struct { |
已完成
执行用时: 4 ms
输入:["SummaryRanges","addNum","getIntervals","addNum","getIntervals","addNum","getIntervals","addNum","getIntervals","addNum","getIntervals"]
[[],[1],[],[3],[],[7],[],[2],[],[6],[]]
输出:[null,null,[],null,[],null,[],null,[],null,[]]
预期结果:[null,null,[[1,1]],null,[[1,1],[3,3]],null,[[1,1],[3,3],[7,7]],null,[[1,3],[7,7]],null,[[1,3],[6,7]]]
stdout:
1 | [[1, 1], ] |
按照我的打印,实现应该是没问题的,不知道为什么输出一直是空,和预期结果对不上,所以用python
实现一遍
1 | class SummaryRanges: |