135. 分發糖果
n
個孩子站成一排。給你乙個整數陣列ratings
表示每個孩子的評分。
你需要按照以下要求,給這些孩子分發糖果:
請你給每個孩子分發糖果,計算並返回需要準備的最少糖果數目。
示例 1:
輸入:ratings = [1,0,2]
輸出:5
解釋:你可以分別給第乙個、第二個、第三個孩子分發 2、1、2 顆糖果。
示例 2:
輸入:ratings = [1,2,2]
輸出:4
解釋:你可以分別給第乙個、第二個、第三個孩子分發 1、2、1 顆糖果。
第三個孩子只得到 1 顆糖果,這滿足題面中的兩個條件。
思路: 首先,當然可以暴力計算兩次,一次先計算從左到右,如果i比i-1小就先當做1.然後再從右到左計算一次即可
但是還是使用o(n)一次遍歷的方法。
這裡推薦去**官方的解釋。
首先,如果i大於i-1的話,那麼我們只需要比上一次多給乙個即可。如果等於,那麼就只給乙個。
如果i小於i-1的情況呢?我們要怎麼計算呢?那麼我們只需要計算出遞減序列的數量,給那個人送1個糖果,然後給其他所有遞減序列中的人多分配1個糖果即可。如果遞減序列和遞增序列的長度相同時,需要把遞增的最後乙個放入遞減序列中,否則會破壞規則。
class solution else
}return ans;
}};
135 分發糖果
題目.high 其實就是求每個數左邊或者右邊連續小於自己的個數。感覺不是很難啊。package main import fmt func candy ratings int int candies make int len ratings for i 0 i len ratings i lesscn...
135 分發糖果
老師想給孩子們分發糖果,有 n 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。你需要按照以下要求,幫助老師給這些孩子分發糖果 每個孩子至少分配到 1 個糖果。相鄰的孩子中,評分高的孩子必須獲得更多的糖果。那麼這樣下來,老師至少需要準備多少顆糖果呢?示例 1 輸入 1,0,2 輸出 ...
135 分發糖果
一 題目描述 老師想給孩子們分發糖果,有 n 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。你需要按照以下要求,幫助老師給這些孩子分發糖果 每個孩子至少分配到 1 個糖果。相鄰的孩子中,評分高的孩子必須獲得更多的糖果。那麼這樣下來,老師至少需要準備多少顆糖果呢?示例 1 輸入 1,...