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