Skip to content

Commit cbcb6dc

Browse files
committed
自己的思路好像是有点繁琐的。。
1 parent 6849186 commit cbcb6dc

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

Insert Interval renamed to Insert Interval && Merge Intervals

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,50 @@ public:
3737
return result;
3838
}
3939
};
40+
41+
class Solution {
42+
public:
43+
static bool myfunction(const Interval a,const Interval b) // 一定要加static,,否则会报错
44+
{
45+
return a.start < b.start;
46+
}
47+
vector<Interval> merge(vector<Interval> &intervals) {
48+
vector<Interval> result;
49+
if(intervals.size() > 1)
50+
{
51+
sort(intervals.begin(),intervals.end(),myfunction);
52+
bool flag = false; // 标记是否是连续合并的
53+
int tempMax = intervals[0].end;
54+
for(int i = 1;i < intervals.size();i++)
55+
{
56+
if(tempMax < intervals[i].start)
57+
{
58+
if(!flag)
59+
result.push_back(intervals[i-1]);
60+
if(i == intervals.size()-1)
61+
result.push_back(intervals[i]);
62+
flag = false;
63+
}
64+
else
65+
{
66+
67+
if(flag) // 连续是可合并,看看能否合并成一个
68+
{
69+
result.back().end = max(tempMax,intervals[i].end);
70+
tempMax = result.back().end;
71+
continue;
72+
} // 这里感觉可以优化。。
73+
Interval *newVal = new Interval(intervals[i-1].start,max(intervals[i-1].end,intervals[i].end));
74+
result.push_back(*newVal);
75+
flag = true;
76+
}
77+
tempMax = max(intervals[i-1].end,intervals[i].end);
78+
}
79+
}
80+
else
81+
result = intervals;
82+
return result;
83+
}
84+
};
85+
86+

0 commit comments

Comments
 (0)