8.2周三
- 435. 无重叠区间
- 763.划分字母区间
- 56. 合并区间
详细布置
今天的三道题目,都算是 重叠区间 问题,大家可以好好感受一下。 都属于那种看起来好复杂,但一看贪心解法,惊呼:这么巧妙!
还是属于那种,做过了也就会了,没做过就很难想出来。
不过大家把如下三题做了之后, 重叠区间 基本上差不多了
435. 无重叠区间
题目:
移除区间,使区间不重叠
题解:
和昨天的气球问题很像,找到重叠区间result++
763.划分字母区间
题目:
划分区间,使每种字母仅在一个区间出现
题解:
1、统计26个字母每种字母出现的最远位置
2、遍历数组
3、遍历过程中更新right(区间右边界),如果right==i了,就将right- left+1(区间长度)放入result数组中
新知识:
利用hash[s[i] - 'a'] = i来获取每个字母的最远位置
56. 合并区间
题目:遇到重叠的区间就将其合并
题解:
1、将数组排序
2、如果遇到重叠区间,那么结果集里的最后一个区间的右边界就应该更新。更新为Max(当前右边界,遍历的区间i的右边界)
3、如果没有重叠,就将区间i加入结果集
和之前题目的不同之处是这里更新选取的右区间较大值