老師想給孩子們分發糖果,有 n 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。
你需要按照以下要求,幫助老師給這些孩子分發糖果:
每個孩子至少分配到 1 個糖果。
評分更高的孩子必須比他兩側的鄰位孩子獲得更多的糖果。
那麼這樣下來,老師至少需要準備多少顆糖果呢?
我的答案:
就是列表兩側加0,然後從左往右進行乙個遍歷檢視是否有某個i位置,它比前後都多,都多的話那麼就多給它分配一顆糖,並且i+=2。但是很遺憾超時了
classsolution:
#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
別人的答案:
classsolution:
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...