1. <?php
    2. class Solution {
    3. /**
    4. * @param Integer[][] $intervals
    5. * @param Integer[] $newInterval
    6. * @return Integer[][]
    7. */
    8. public function insert($intervals, $newInterval) {
    9. $ret = [];
    10. // 初始化检测元素左右值
    11. list($left, $right) = $newInterval;
    12. // 遍历原数组
    13. foreach ($intervals as $interval) {
    14. // 如果遍历元素左值 大于 检测元素右值
    15. if ($interval[0] > $right) {
    16. array_push($ret, [$left, $right]);
    17. $left = $interval[0];
    18. $right = $interval[1];
    19. }
    20. // 如果区间不重合
    21. if ($interval[0] > $right || $interval[1] < $left) {
    22. array_push($ret, $interval);
    23. } else {
    24. // 修改检测元素左右值
    25. $left = min($left, $interval[0]);
    26. $right = max($right, $interval[1]);
    27. }
    28. }
    29. array_push($ret, [$left, $right]);
    30. return $ret;
    31. }
    32. }
    33. $intervals = [[1,2],[3,5],[6,10],[12,16],[20,23]];
    34. $newInterval = [4, 12];
    35. $cls = new Solution();
    36. $ret = $cls->insert($intervals, $newInterval);
    37. array_walk($ret, function(&$v) {
    38. $v = implode(',', $v);
    39. });
    40. print_r($ret);