forked from doocs/leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSolution2.rs
28 lines (26 loc) · 893 Bytes
/
Solution2.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
impl Solution {
pub fn insert(intervals: Vec<Vec<i32>>, new_interval: Vec<i32>) -> Vec<Vec<i32>> {
let mut inserted = false;
let mut result = vec![];
let (mut start, mut end) = (new_interval[0], new_interval[1]);
for iter in intervals.iter() {
let (cur_st, cur_ed) = (iter[0], iter[1]);
if cur_ed < start {
result.push(vec![cur_st, cur_ed]);
} else if cur_st > end {
if !inserted {
inserted = true;
result.push(vec![start, end]);
}
result.push(vec![cur_st, cur_ed]);
} else {
start = std::cmp::min(start, cur_st);
end = std::cmp::max(end, cur_ed);
}
}
if !inserted {
result.push(vec![start, end]);
}
result
}
}