class Solution:
def candy(self, ratings: List[int]) -> int:
n = len(ratings)
num = [1]*n
# 左到右
for i in range(1,n):
if ratings[i]>ratings[i-1]:
num[i] = num[i-1]+1
for i in range(n-2,-1,-1): #[n-2,-1) ,步长 -1
if ratings[i]>ratings[i+1]:
num[i] = max(num[i],num[i+1]+1)
return sum(num)
class Solution:
def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]:
# p[h,k] 先h降序排,再k升序排;减少插入次数
res = []
people = sorted(people,key = lambda x:(-x[0],x[1] ))
for p in people:
if len(res) <= p[1]: #长度小于k
res.append(p)
elif len(res) > p[1]:
res.insert(p[1],p)
return res