力扣135.分发糖果简单解析

我们看一下题目。他要求我们对相邻的比较,但是我们会发现,从左至右的时候右面是未知的,如果出现一组这样的我们可能就做不出来

[1, 2, 8, 8, 3, 1]

与右面的相比的话,我们不能只是简简单单的加1了,那该怎么办呐?
试想如果弄两个数组,每个数组分别代表从左至右和从右至左如何?

class Solution:
    def candy(self, ratings: List[int]) -> int:
        num = [1 for _ in range(len(ratings))]
        Num = num[:]
        n = len(ratings)

之后呐,就开始分别搞了!

        for i in range(1, len(ratings)):
            if ratings[i] > ratings[i - 1]:
                num[i] = num[i - 1] + 1
                #从左至右
    for i in range(n - 2, -1, -1):
        if ratings[i] > ratings[i + 1]:
            Num[i] = max(num[i], Num[i + 1] + 1)
            #从右至左

或许有人不懂 for i in range(n - 2, -1, -1):这一串什么意思,他就是从n-2到-1,-1是步长,每次-1.
之后我们就可以求和了

for i in range(n):
            count += max(num[i], Num[i])

哪里不懂的可以私信我哦!

上一篇:leetcode 135 分发糖果


下一篇:135. 分发糖果