2025-3-13 leetcode刷题环境(贪心算法--区间问题)
一、763.分别字母区间1.标题描述
https://i-blog.csdnimg.cn/direct/26be71ab3b054bf990b452ab159a35e1.png
2.代码
https://i-blog.csdnimg.cn/direct/b1b61d676f7448e8b287b12545cb6b0d.png
3.思绪
[*]统计每一个字符最后出现的位置
[*]从头遍历字符,并更新字符的最远出现下标,假如找到字符最远出现位置下标和当前下标相等了,则找到了分割点
二、56.合并区间
1.标题描述
https://i-blog.csdnimg.cn/direct/991290c6ccd14b4ea4abc5f1c40ce429.png
2.代码
https://i-blog.csdnimg.cn/direct/274785d8cdb54f368f99f4e1b3ef1240.png
3.思绪
先排序,让所有的相邻区间尽可能的重叠在一起。
[*]使用 Arrays.sort 方法对 intervals 数组按照区间的起始位置进行排序。通过 (x, y) -> Integer.compare(x, y) 作为比较器,确保区间按起始位置从小到大排列。
[*]初始化合并区间的起始位置和右边界:将第一个区间的起始位置 intervals 赋值给 start,作为当前合并区间的起始位置;将第一个区间的竣事位置 intervals 赋值给 rightmostRightBound,作为当前合并区间的右边界。
[*]遍历区间数组:从第二个区间开始遍历,对于每个区间 intervals:
[*]若当前区间的起始位置 intervals 大于当前合并区间的右边界 rightmostRightBound,说明当前区间与之前的合并区间不重叠。此时,将之前的合并区间 添加到结果列表 res 中,并更新 start 为当前区间的起始位置 intervals,rightmostRightBound 为当前区间的竣事位置 intervals。
[*]若当前区间的起始位置 intervals 小于或等于当前合并区间的右边界 rightmostRightBound,说明当前区间与之前的合并区间重叠。此时,更新 rightmostRightBound 为当前合并区间右边界和当前区间竣事位置的较大值,即 rightmostRightBound = Math.max(rightmostRightBound, intervals)。
[*]添加最后一个合并区间:遍历竣过后,将最后一个合并区间 添加到结果列表 res 中。
[*]返回结果:将结果列表 res 转换为二维数组并返回,该数组即为合并后的区间数组。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]