代码随想录算法训练营第三十天|452. 用最少数量的箭引爆气球、 435. 无重叠区间 、 763.划分字母区间

11 阅读1分钟

452. 用最少数量的箭引爆气球

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

解题思路

代码实现

var findMinArrowShots = function(points) {
    points.sort((a,b)=>{
        return a[0]-b[0];
    })
    var res =1;
    console.log(points)
    for(let i =1;i<points.length;i++){
        if(points[i][0] > points[i-1][1]){
            res++;
        }else{
            points[i][1] = Math.min(points[i][1],points[i-1][1]);
        }
    }
    return res;
};

435. 无重叠区间

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

解题思路

代码实现

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

    console.log(intervals);
    for(let i=1;i<intervals.length;i++){
        console.log(cur,intervals[i-1][1]);
        if((cur!=undefined  && intervals[i][0] < cur)){
                res++;
        }else if(cur ==undefined  && (intervals[i][0] <intervals[i-1][1])){
                cur= intervals[i-1][1];
                res++;
        }
        else{
            cur = intervals[i][1];
        }
    }
    return res;
};

763.划分字母区间

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

解题思路

代码实现

var partitionLabels = function(s) {
    var end,len=0,res=[];
    for(let i =0;i<s.length;i++){ 
        end = s.lastIndexOf(s[i]);
        for(let j=1;j<end;j++){
           end = s.lastIndexOf(s[j]) > end? s.lastIndexOf(s[j]):end;
        }
        len = end -i + 1;
        i=end;
        res.push(len);
    }
    return res;
};