目录
学习目标
- 435. 无重叠区间
- 763.划分字母区间
- 56. 合并区间
学习内容
435. 无重叠区间
435. 无重叠区间 - 力扣(LeetCode)https://leetcode.cn/problems/non-overlapping-intervals/
class Solution:
def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
res = 0
intervals.sort(key=lambda x:x[0])
#print(intervals)
tmp = intervals[0][1]
for item in intervals:
if item[0]<tmp:
res+=1
#print(tmp)
tmp = min(tmp,item[1])
else:
tmp = item[1]
return res-1
763.划分字母区间
763. 划分字母区间 - 力扣(LeetCode)https://leetcode.cn/problems/partition-labels/
class Solution:
def partitionLabels(self, s: str) -> List[int]:
n = len(s)
res = []
tmp = [-1]*26
for i in range(n):
tmp[ord(s[i])-ord("a")]=i
#print(tmp)
left =0
right = 0
for i in range(n):
if i>right:
res.append(right-left+1)
left = i
right = max(right,tmp[ord(s[i])-ord("a")])
res.append(n-left)
return res
56. 合并区间
56. 合并区间 - 力扣(LeetCode)https://leetcode.cn/problems/merge-intervals/
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
n = len(intervals)
intervals.sort(key = lambda x:x[0])
i = 0
while i<n:
if i+1<n and intervals[i+1][0]<=intervals[i][1]:
intervals[i][1] = max(intervals[i+1][1],intervals[i][1])
intervals.pop(i+1)
n-=1
else:
i+=1
return intervals