当前位置: 首页 > ds >正文

贪心算法 Part04

总结下重叠区间问题

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

LC 435. 无重叠区间

本质上是一样的。

LC 452. 用最少数量的箭引爆气球 是求n个区间当中 , 区间的种类数量 k。此处可以理解为,重叠在一起的区间属于同一品种,没有重叠的区间当然就是另一个品种 , 最少数量的箭,也就是区间总的种类数量k有k种区间 ,最少就得花k只剑,每种区间耗费一支

而 LC 435. 无重叠区间 , 问使得区间之间不重叠,要移除的区间数量,可以这样思考:

n个区间当中,有k种区间(区间的种类数量 k)。要使得区间之间不重叠 , 也就是说每个种类的区间只能保留一种!(因为有重叠的区间属于同一个品种)

因此 要移除的区间数量 就是总的区间数 n 减去区间种类的数量 k。

这两个题是同一个模板!

给出无重叠区间的代码

class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals , (a ,b) -> a[0] -b[0] );int count = 1;for(int i = 1 ; i < intervals.length ; i ++){if(intervals[i][0] >= intervals[i-1][1]){count ++;}else{intervals[i][1] = Math.min(intervals[i-1][1] , intervals[i][1]);}}return intervals.length - count;}
}

763.划分字母区间

题目描述:

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。例如,字符串 "ababcc" 能够被分为 ["abab", "cc"],但类似 ["aba", "bcc"] 或 ["ab", "ab", "cc"] 的划分是非法的。

思路:

1.先遍历字符串 ,把每个字母出现的最大的索引存到一个哈希表中

2.再遍历字符串,此时我们就要去划分字符串了。划分的过程如下:

先初始化子区间的左右边界 left , right 初始化为0 , 0

遍历的时候 ,动态更新当前区间的最大右边界 ,而当恰好此时的索引 i 等于右边界时 ,就划分出一个子区间了,该子区间长度为 right - left + 1。 划分完毕后 ,left 需要更新为 i + 1 ,然后继续遍历,重复此过程。。。。

class Solution {public List<Integer> partitionLabels(String s) {List<Integer> res = new ArrayList<>();int[] hash = new int[26];for(int i = 0 ; i < s.length() ; i ++){hash[s.charAt(i) - 'a'] = i;}int left = 0;int right = 0;for(int i = 0 ; i < s.length() ; i ++){right = Math.max(right , hash[s.charAt(i) - 'a']);if(i == right){res.add(right - left + 1);left = i + 1;}}return res;}
}

http://www.xdnf.cn/news/7953.html

相关文章:

  • 【VLNs篇】03:VLMnav-端到端导航与视觉语言模型:将空间推理转化为问答
  • Dirsearch 深度使用教程:从基础扫描到携带 Cookie 探索网站
  • Oracle审计用户登录信息
  • TCP全连接和tcpdump抓包实现
  • Gradle下载安装及配置
  • AI就是个fw
  • 流式优先架构:彻底改变实时数据处理
  • AI加速芯片全景图:主流架构和应用场景详解
  • 49、c# 能⽤foreach 遍历访问的对象需满足什么条件?
  • Python爬虫实战:获取小说网最新风云榜数据并分析,为创作者提供参考素材
  • QMK固件RGB矩阵照明功能详解 - 打造你的专属炫彩键盘
  • 人工智能范式:技术革命下的认知重构
  • 分类预测 | Matlab实现PSO-RF粒子群算法优化随机森林多特征分类预测
  • AI 与 IT 从业者:风暴之眼中的共存与进化
  • Python数据分析实战:Pandas高效处理Excel数据指南
  • 赋能智慧党建:远眺科技助力党校可视化系统高效落地
  • Elasticsearch知识点
  • 独占内存访问指令LDXR/STXR
  • Android本地语音识别引擎深度对比与集成指南:Vosk vs SherpaOnnx
  • 【Linux】第二十五章 运行容器
  • 基于大模型的全面惊厥性癫痫持续状态技术方案
  • 以太联Intellinet带您深度解析PoE交换机的上行链路端口(Uplink Ports)
  • Java 线程与守护线程深度解析:原理、应用与优雅停止实践
  • 【题解-洛谷】P6180 [USACO15DEC] Breed Counting S
  • 检索增强生成(RAG):大模型的‘外挂知识库
  • 2025.05.21华为暑期实习机考真题解析第二题
  • 精益制造数字化转型智能工厂三年规划建设方案
  • SQL 查询来查看 PostgreSQL的各连接数
  • Ubuntu 20.04卸载并重装 PostgreSQL
  • UML 活动图 (Activity Diagram) 使用案例