代码随想录算法训练营第三十一天|56. 合并区间 、 738.单调递增的数字 、 968.监控二叉树 (可跳过)

12 阅读1分钟

56. 合并区间

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

var merge = function(intervals) {
    intervals.sort((a,b)=>{
        if(a[0] ==b[0]) return a[1]-b[1];
        return a[0]-b[0];
    })

    var res =[];
    if(intervals.length===1){
        return intervals;
    }
    for(let i=1;i<intervals.length;i++){
        if(intervals[i][0] > intervals[i-1][1]){
            var value= intervals[i-1];
            res.push([...value]);
        }else{
            intervals[i][1] = Math.max(intervals[i-1][1],intervals[i][1]);
            intervals[i][0] = Math.min(intervals[i-1][0],intervals[i][0]);
        }
        if(i === intervals.length-1){
                  var value= intervals[i];
                  res.push([...value]);
        }
    }
    return res;
};

738.单调递增的数字

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

var monotoneIncreasingDigits = function(n) {
    var str1 = n +'';
    var str = str1.split('');

    if(str.length<=1){
        return str1 *1;
    }
    var flag;
    for(let i =str.length-1;i>=1;i--){
        if(str[i]*1<str[i-1]*1){
            str[i-1]= str[i-1]-1;
           flag=i;
        }
    }
    for(let i =flag;i<str.length;i++){
        str[i] = 9;
    }
    return Number(str.join(''));
};

968.监控二叉树 (可跳过)

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现