剑指 Offer II 074. 合并区间

131 阅读1分钟

剑指 Offer II 074. 合并区间

[[1,3],[2,6],[15,18],[8,10]],按照每个item数组的第一项排序为[[1,3],[2,6],[8,10]],[15,18] 然后就是就是便利数组,[1,3]为首项,和[2,6],因为3 < 6,说明有重叠了,于是和二为一

var merge = function (arr) {
  if (arr == null || !arr.length) {
    return arr;
  }
  arr.sort((a, b) => {
    return a[0] - b[0];
  });
  var res = [];
  var i = 0;
  while (i < arr.length) {
    var cur = [arr[i][0], arr[i][1]];
    var j = i + 1;
    while (j < arr.length && arr[j][0] <= cur[1]) {
      cur[1] = Math.max(cur[1], arr[j][1]);
      j++;
    }
    res.push(cur);
    i = j;
  }
  return res;
};