/*
 * @lc app=leetcode.cn id=56 lang=javascript
 *
 * [56] 合并区间
 */

// @lc code=start
/**
 * @param {number[][]} intervals
 * @return {number[][]}
 */
var merge = function (intervals) {
  intervals.sort((a, b) => a[0] - b[0])
  const result = [];
  for (let i = 1; i < intervals.length; i++) {
    if (intervals[i][0] > intervals[i - 1][1]) {
      result.push(intervals[i - 1]);
    } else {
      // 合并后直接覆盖当前数组
      intervals[i][0] = Math.min(intervals[i - 1][0], intervals[i][0]);
      intervals[i][1] = Math.max(intervals[i - 1][1], intervals[i][1])
    }
  }
  // 最后一个合并完成后不会再走循环,所以需要将最后一个添加到最终结果
  result.push(intervals[intervals.length - 1]);
  return result;
};
// @lc code=end

console.log(merge([[1, 3], [2, 6], [8, 10], [15, 18]]))