第八章 贪心算法 part05(● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间 )

学习目标:

● 435. 无重叠区间

● 763.划分字母区间

● 56. 合并区间


学习内容:● 435. 无重叠区间

https://programmercarl.com/0435.无重叠区间.html

csharp 复制代码
var eraseOverlapIntervals = function(intervals) {
    intervals.sort((a,b)=>{
       return a[0]-b[0]
    })
  
    if(intervals.length==1)return 0;
    let count = 0
    for(let i=1;i<intervals.length;i++){
        if(intervals[i][0]<intervals[i-1][1]){
            count++;
            intervals[i][1] = Math.min(intervals[i][1],intervals[i-1][1])
        }
    }
    return count
};

学习内容:● 763.划分字母区间

https://programmercarl.com/0763.划分字母区间.html

可以分为如下两步:

统计每一个字符最后出现的位置

从头遍历字符,并更新字符的最远出现下标,如果找到字符最远出现位置下标和当前下标相等了,则找到了分割点

csharp 复制代码
会思路,但是不会写,哈希
let hash = {}
    for(let i=0;i<s.length;i++){
        hash[s[i]]=i
}
csharp 复制代码
var partitionLabels = function(s) {
    let hash = {}
    for(let i=0;i<s.length;i++){
        hash[s[i]]=i
    }
    let result = [];
    let right=0,left=0;
    for(let i=0;i<s.length;i++){
        right = Math.max(hash[s[i]],right)
        if(right==i){
            result.push(right-left+1);
            left = i+1
        }
    }
    return result
};

学习内容:● 56. 合并区间

https://programmercarl.com/0056.合并区间.html

csharp 复制代码
result直接先插入intervals[0],在判断重叠后合并,只判断右区间就可以,排序后左区间一定是最小的,直接操作result就可以
csharp 复制代码
var merge = function(intervals) {
    if(intervals.length<=1)return intervals;
    intervals.sort((a,b)=>{
        return a[0]-b[0]
    })
    let result =[intervals[0]]
    for(let i=1;i<intervals.length;i++){
        if(intervals[i][0]<=result[result.length-1][1]){          
            // intervals[i][0] = Math.min(intervals[i][0],result[result.length-1][0])不用合并,一定是最小的
           result[result.length-1][1] = Math.max(intervals[i][1],result[result.length-1][1])
        }else{
            result.push(intervals[i])
        }       
    }
    return result
};

相关推荐
YGGP8 小时前
【Golang】LeetCode 64. 最小路径和
算法·leetcode
古城小栈9 小时前
Rust变量设计核心:默认不可变与mut显式可变的深层逻辑
算法·rust
电商API&Tina9 小时前
跨境电商 API 对接指南:亚马逊 + 速卖通接口调用全流程
大数据·服务器·数据库·python·算法·json·图搜索算法
LYFlied10 小时前
【每日算法】LeetCode 1143. 最长公共子序列
前端·算法·leetcode·职场和发展·动态规划
长安er11 小时前
LeetCode 20/155/394/739/84/42/单调栈核心原理与经典题型全解析
数据结构·算法·leetcode·动态规划·
MarkHD11 小时前
智能体在车联网中的应用:第28天 深度强化学习实战:从原理到实现——掌握近端策略优化(PPO)算法
算法
能源系统预测和优化研究11 小时前
【原创代码改进】考虑共享储能接入的工业园区多类型负荷需求响应经济运行研究
大数据·算法
yoke菜籽12 小时前
LeetCode——三指针
算法·leetcode·职场和发展
小高不明12 小时前
前缀和一维/二维-复习篇
开发语言·算法
bin915312 小时前
当AI优化搜索引擎算法:Go初级开发者的创意突围实战指南
人工智能·算法·搜索引擎·工具·ai工具