Data Stream as Disjoint Interval | leetcode
2016-06-08 10:44
429 查看
/** * 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 SummaryRanges { public: /** Initialize your data structure here. */ SummaryRanges() { inters = vector<Interval>(); n=0; //numbers = vector<int>(); } void addNum(int val) { ++n; vector<Interval>::iterator it=inters.begin(); while(it!=inters.end()){ int start=it->start; int end=it->end; if(val>=start&&val<=end) break; if(val==start-1){ it->start=val; break; } if(val==end+1){ it->end=val; break; } ++it; } if(it==inters.end()){ Interval temp=Interval(val,val); inters.push_back(temp); } } static bool compare(Interval i1,Interval i2){ return i1.start<=i2.start; } vector<Interval> getIntervals() { //conbine those intervals sort(inters.begin(),inters.end(),compare); for(int i=0;i<inters.size()-1;){ if(inters[i].end>=inters[i+1].start-1&&inters[i].end<=inters[i+1].end){ inters[i].end=inters[i+1].end; inters.erase(inters.begin()+i+1); }else ++i; } return inters; } private: vector<Interval> inters; int n; //vector<int> numbers; }; /** * Your SummaryRanges object will be instantiated and called as such: * SummaryRanges obj = new SummaryRanges(); * obj.addNum(val); * vector<Interval> param_2 = obj.getIntervals(); */
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解