1. 程式人生 > >插入區間

插入區間

判斷 ins gin 自己的 star intervals erl size_t span

以下是我自己的代碼

    vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {
        //write your code here
        vector<Interval> a;
        Interval b(0, 0);
        int x = 0;
        int y = 0;
        int m = 0;
        int n = intervals.size();
        for (size_t i = 0
; i != n; i++) { // 左邊數字的判斷 if (x == 0 && newInterval.start <= intervals[i].start) { b.start = newInterval.start; x = 1; } else if (x == 0 && newInterval.start <= intervals[i].end) { b.start
= intervals[i].start; x = 1; } else if (x == 0){ b.start = intervals[i].start; } // 下面是右邊數字的判斷 if (y == 0 && newInterval.end < intervals[i].start) { b.end = newInterval.end; y
= 1; } else if (y == 0 && newInterval.end == intervals[i].start) { b.end = intervals[i].end; y = 2; } else if (y == 0 && newInterval.end <= intervals[i].end) { b.end = intervals[i].end; y = 3; } else if (y == 0){ b.end = intervals[i].end; } if ( m == 0 && (x != 0 && y != 0) ) { m++; a.push_back(b); } if (y == 0 && x == 0) a.push_back(b); if (x != 0 && y != 0) { if (y == 2 || y == 3) { y = 1; } else a.push_back(intervals[i]); } } if (x == 0 && y == 0) { a.push_back(newInterval); } if (x != 0 && y == 0) { b.end = newInterval.end; a.push_back(b); } return a; }

別人家的代碼

 1 // Using Index
 2 class Solution {
 3 public:
 4     vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {
 5         vector<Interval> res = intervals;
 6         int i = 0, overlap = 0, n = res.size();
 7         while (i < n) {
 8             if (newInterval.end < res[i].start) break;  
 9             else if (newInterval.start > res[i].end) {} 
10             else {
11                 newInterval.start = min(newInterval.start, res[i].start);
12                 newInterval.end = max(newInterval.end, res[i].end);
13                 ++overlap;
14             }
15             ++i;
16         }
17         if (overlap > 0) res.erase(res.begin() + i - overlap, res.begin() + i);
18         res.insert(res.begin() + i - overlap, newInterval);
19         return res;
20     }
21 };

插入區間