代码随想录第三十六天 ● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间

这是重叠区间的一天

● 435. 无重叠区间

题目链接: https://leetcode.cn/problems/non-overlapping-intervals/

思路和第三十五天最后一题差不多,这次是记录未重叠的点

代码:

/**
 * @param {number[][]} intervals
 * @return {number}
 */
var eraseOverlapIntervals = function (intervals) {
     intervals.sort((a, b) => a[0] - b[0])
    let removeResult = 0;
    let startPoint = intervals[intervals.length - 1]
    for (let i = intervals.length - 2; i >= 0; i = i - 1) {
        if (intervals[i][1] > startPoint[0]) {
            removeResult = removeResult + 1
            continue
        }
        startPoint = intervals[i]
    }
    return removeResult
};

● 763.划分字母区间

题目链接: 力扣   题目链接

这道题一上来就没什么思路;如何判断这一群的开始和结束位置,让相同字母个数最多;

看了卡哥的思路:首先要找到每个字母的最大边界,在不断找的过程中,会将其他字母也覆盖;获得这个最大边界的哈希表后,再遍历字符串,通过左右指针来确定终止的边界;

代码如下

var partitionLabels = function(s) {
    let hash = {}
    for(let i = 0; i < s.length; i = i+ 1) {
        hash[s[i]] = i
    }
    let left = 0, right = 0, result = []
    for(let k = 0; k < s.length; k = k + 1) {
        right = Math.max(right, hash[s[k]]) // 找到这段字符串的最大边界,找 a 的时候也在更新 c 的
        if(k === right) {
            result.push(right - left + 1)
            left = right + 1
        }
    }
    return result
};

● 56. 合并区间 

题目链接: . - 力扣(LeetCode)

思路:依旧是求重叠区间的题, 这里有几个细节要注意,排序之后,startPoint 第一位一定是最小值,如果 startPoint是第一位或者最后一位,那么在循环中取不到,需要在最后在 push 进数组

intervals.sort((a,b) => a[0] - b[0])
    let startPoint = intervals[0]
    let result = []
    for(let i = 1; i < intervals.length; i = i + 1) {
        if( intervals[i][0] <= startPoint[1] && intervals[i][0] >= startPoint[0]) {
            startPoint = [startPoint[0], Math.max(startPoint[1], intervals[i][1])]
            continue
        }
        result.push(startPoint)
        startPoint = intervals[i]

    }
    result.push(startPoint)
    return result

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值