[56] 合并区间

53 阅读1分钟

思路

  • 1.先按照子数组的第一个元素排序
  • 2.判断第二个子数组的第一个元素是不是小于第一个子数组的第二个元素
  • 3.最后再把定义的变量数组push进去
/*
 * @lc app=leetcode.cn id=56 lang=javascript
 *
 * [56] 合并区间
 */

// @lc code=start
/**
 * @param {number[][]} intervals
 * @return {number[][]}
 * 1.先按照子数组的第一个元素排序
 * 2.判断第二个子数组的第一个元素是不是小于第一个子数组的第二个元素
 * 3.最后再把定义的变量数组push进去
 */
var merge = function (intervals) {
  if (intervals.length < 2) return intervals
  // 1
  intervals.sort((a, b) => {
    return a[0] - b[0]
  })
  let curr = intervals[0],
    result = []
  for (let item of intervals) {
    // 2
    if (item[0] <= curr[1]) {
      curr[1] = Math.max(curr[1], item[1])
    } else {
      result.push(curr)
      curr = item
    }
  }
  // 3
  if (curr.length !== 0) result.push(curr)
  return result
}
// @lc code=end