<?phpclass Solution { /** * @param Integer[][] $intervals * @param Integer[] $newInterval * @return Integer[][] */ public function insert($intervals, $newInterval) { $ret = []; // 初始化检测元素左右值 list($left, $right) = $newInterval; // 遍历原数组 foreach ($intervals as $interval) { // 如果遍历元素左值 大于 检测元素右值 if ($interval[0] > $right) { array_push($ret, [$left, $right]); $left = $interval[0]; $right = $interval[1]; } // 如果区间不重合 if ($interval[0] > $right || $interval[1] < $left) { array_push($ret, $interval); } else { // 修改检测元素左右值 $left = min($left, $interval[0]); $right = max($right, $interval[1]); } } array_push($ret, [$left, $right]); return $ret; }}$intervals = [[1,2],[3,5],[6,10],[12,16],[20,23]];$newInterval = [4, 12];$cls = new Solution();$ret = $cls->insert($intervals, $newInterval);array_walk($ret, function(&$v) { $v = implode(',', $v);});print_r($ret);