每日一題力扣135 分糖果 中級

2022-09-02 09:27:06 字數 1136 閱讀 5134

老師想給孩子們分發糖果,有 n 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。

你需要按照以下要求,幫助老師給這些孩子分發糖果:

每個孩子至少分配到 1 個糖果。

評分更高的孩子必須比他兩側的鄰位孩子獲得更多的糖果。

那麼這樣下來,老師至少需要準備多少顆糖果呢?

我的答案:

就是列表兩側加0,然後從左往右進行乙個遍歷檢視是否有某個i位置,它比前後都多,都多的話那麼就多給它分配一顆糖,並且i+=2。但是很遺憾超時了

class

solution:

#def candy(self, ratings: list[int]) -> int:

##先在列表左右兩側加0,然後遍歷這個列表,如果遇見它比左右更多,那麼count就加1.並且跳過它的右側同學

#r=[0]+ratings+[0]

#i=1

#count=0

#while i < len(r)-1:

#if r[i-1]r[i+1]:

#i+=2

#count+=1

#count+=(len(r)-2)

#return count

別人的答案:

class

solution:

def candy(self, ratings: list[int]) ->int:

left = [1 for _ in range(len(ratings))]#

每個人給乙個

right =left[:]

for i in range(1, len(ratings)):

if ratings[i] > ratings[i - 1]: left[i] = left[i - 1] + 1count = left[-1]#

最後乙個孩子的糖

for i in range(len(ratings) - 2, -1, -1):#

然後倒著過來

if ratings[i] > ratings[i + 1]: right[i] = right[i + 1] + 1count += max(left[i], right[i])#

得到的是每次最多的那次的糖

return count

leetcode每日一題 135 分發糖果

題目 老師想給孩子們分發糖果,有 n 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。你需要按照以下要求,幫助老師給這些孩子分發糖果 每個孩子至少分配到 1 個糖果。評分更高的孩子必須比他兩側的鄰位孩子獲得更多的糖果。那麼這樣下來,老師至少需要準備多少顆糖果呢?思路 將每個數當看作乙...

力扣刷題筆記 135 分發糖果

題目 135.分發糖果 老師想給孩子們分發糖果,有 n 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。你需要按照以下要求,幫助老師給這些孩子分發糖果 每個孩子至少分配到 1 個糖果。相鄰的孩子中,評分高的孩子必須獲得更多的糖果。那麼這樣下來,老師至少需要準備多少顆糖果呢?示例 1 ...

每日一題 力扣 計畫

98 驗證二叉搜尋樹 問題給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 1.節點的左子樹只包含小於當前節點的數。2.節點的右子樹只包含大於當前節點的數。3.所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 1 3 輸出 true示例2 輸入 5 1 4...