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] + 1for 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] + 1return 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 0count = 0intervals = sorted(intervals, key = lambda a:a[1])end = intervals[0][1]for s,e in intervals[1:]:if s < end:count+=1else:end = ereturn count
