zoukankan      html  css  js  c++  java
  • 刷题76——合并区间

    115.合并区间

    题目链接

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/merge-intervals

    题目描述

    给出一个区间的集合,请合并所有重叠的区间。

    示例 1:

    输入: [[1,3],[2,6],[8,10],[15,18]]
    输出: [[1,6],[8,10],[15,18]]
    解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
    示例 2:

    输入: [[1,4],[4,5]]
    输出: [[1,5]]
    解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。

    重难点

    重叠区间:当前区间的前边区间的右区间数值大于当前区间的左区间的数值,就是可重叠区间,取当前区间的前边区间的左区间数值作为重叠区间的左区间,取当前区间的前边区间的右区间数值和当前区间的右区间的数值中最大值作为重叠区间的右区间。

    题目分析

    1. 重叠区间:当前区间的前边区间的右区间数值大于当前区间的左区间的数值,就是可重叠区间,取当前区间的前边区间的左区间数值作为重叠区间的左区间,取当前区间的前边区间的右区间数值和当前区间的右区间的数值中最大值作为重叠区间的右区间。
    2. 以示例1为例:[[1,3],[2,6],[8,10],[15,18]],其中3>2,说明有重叠区间,3<6,因此,第一个重叠区间为[1,6];
    /**
     * @param {number[][]} intervals
     * @return {number[][]}
     */
    var merge = function(intervals) {
        if(!intervals || !intervals.length) return [];
        intervals.sort( (a,b) => a[0] - b[0]);
        let i = 0;
        let res = [];
        while(i< intervals.length){
            let left = intervals[i][0];
            let right = intervals[i][1];
            while(i< intervals.length - 1 && intervals[i+1][0] <= right){
                i++;
                right = Math.max(intervals[i][1], right);
            }
            res.push([left, right]);
            i++;
        }
        return res;
    };
    

      

  • 相关阅读:
    sqlserver中判断表或临时表是否存在
    Delphi 简单方法搜索定位TreeView项
    hdu 2010 水仙花数
    hdu 1061 Rightmost Digit
    hdu 2041 超级楼梯
    hdu 2012 素数判定
    hdu 1425 sort
    hdu 1071 The area
    hdu 1005 Number Sequence
    hdu 1021 Fibonacci Again
  • 原文地址:https://www.cnblogs.com/liu-xin1995/p/12717248.html
Copyright © 2011-2022 走看看