-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathSolution.php
46 lines (40 loc) · 1.08 KB
/
Solution.php
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
/**
* Definition for an interval.
* class Interval {
* public $start = 0;
* public $end = 0;
* function __construct(int $start = 0, int $end = 0) {
* $this->start = $start;
* $this->end = $end;
* }
* }
*/
class Solution {
function cmp($a, $b) {
if ($a->start == $b->start) {
return 0;
}
return ($a->start < $b->start) ? -1 : 1;
}
/**
* @param Interval[] $intervals
* @return Interval[]
*/
function merge($intervals) {
usort($intervals, 'self::cmp');
$mergedIntervals = [];
for ($i = 0; $i < count($intervals);) {
$interval = $intervals[$i];
$start = $interval->start;
$end = $interval->end;
while (++$i < count($intervals) && $intervals[$i]->start <= $end) {
if ($end < $intervals[$i]->end) {
$end = $intervals[$i]->end;
}
}
array_push($mergedIntervals, new Interval($start, $end));
}
return $mergedIntervals;
}
}