# 代码随想录训练营第III期--036--python
# 435. 无重叠区间
class Solution:
def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
intervals.sort(key = lambda x:x[1])
p = intervals[0][1]
res = 1
for i in intervals:
if i[0] >= p:
res += 1
p = i[1]
return len(intervals) - res
# 763.划分字母区间
def partitionLabels(self, s):
hash = [0] * 26
for i in range(len(s)):
hash[ord(s[i]) - ord('a')] = i
result = []
left = 0
right = 0
for i in range(len(s)):
right = max(right, hash[ord(s[i]) - ord('a')])
if i == right:
result.append(right - left + 1)
left = i + 1
return result
# 56. 合并区间
def merge(self, intervals):
intervals.sort(key = lambda x:x[0])
res = [intervals[0]]
intervals.pop(0)
while intervals != []:
tmp = intervals.pop(0)
if res[-1][1] >= tmp[0] and res[-1][1] <= tmp[1]:
new = [res[-1][0], tmp[1]]
res.pop()
res.append(new)
elif res[-1][0] <= tmp[0] and res[-1][1] >= tmp[1]:
continue
else:
res.append(tmp)
return res
代码随想录训练营第III期--036--python
最新推荐文章于 2024-07-23 14:36:35 发布