135. 分发糖果
https://leetcode-cn.com/problems/candy/
从前往后遍历,每次和前面一个元素比。
从后往前遍历,每次和后面一个元素比
class Solution:
def candy(self, ratings: List[int]) -> int:
res = [1]*len(ratings)
for i in range(1,len(ratings)):
if ratings[i] > ratings[i-1]:
res[i]=res[i-1] + 1
for i in range(len(ratings)-2,-1,-1):
if ratings[i] > ratings[i+1] and res[i]<=res[i+1]:
res[i]=res[i+1] + 1
return sum(res)
435. 无重叠区间
https://leetcode-cn.com/problems/non-overlapping-intervals/
这道题说的是算出需要移除区间的最少数量,那我们就要尽可能的把右边界小的区间留下来,如果区间交叉了,不更新边界,因为是用右边界排序的, 如果没有交叉,那更新目前无重叠区间的右边界
class Solution:
def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
if len(intervals) < 2:
return 0
count = 0
intervals = sorted(intervals, key = lambda a:a[1])
end = intervals[0][1]
for s,e in intervals[1:]:
if s < end:
count+=1
else:
end = e
return count