LeetCode 135 分發糖果

2021-10-16 09:23:00 字數 975 閱讀 9784

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

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

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

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

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

示例 1:

輸入:[1,0,2]

輸出:5

解釋:你可以分別給這三個孩子分發 2、1、2 顆糖果。

示例 2:

輸入:[1,2,2]

輸出:4

解釋:你可以分別給這三個孩子分發 1、2、1 顆糖果。

第三個孩子只得到 1 顆糖果,這已滿足上述兩個條件。

用兩個陣列來記錄

乙個從左到右掃瞄評分陣列, 相鄰的兩個元素,如果右邊評分高於左邊, 則右邊糖比左邊多乙個

乙個從右到左掃瞄評分陣列, 相鄰的兩個元素,如果左邊評分比右邊高, 則左邊糖比右邊多乙個

最後結果是兩個陣列中相同索引的元素較大值累加起來

class

solution

}// result要將兩個陣列中相同索引的較大值累加起來

// 因為righttoleft[n - 1]一定是1且下面的迴圈從n - 2開始

// 所以result直接賦值為lefttoright[n - 1]

int result = lefttoright[n -1]

;// 從右到左, 相鄰的兩個元素

// 如果左邊評分比右邊高, 則左邊糖比右邊多乙個

for(

int i = n -

2; i >=

0; i--

) result += math.

max(lefttoright[i]

, righttoleft[i]);

}return result;

}}

LeetCode 135 分發糖果

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

leetcode135 分發糖果

一道很有意思的題目,難度級別為 困難。題目是這樣的的 老師想給孩子們分發糖果,有 n 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。你需要按照以下要求,幫助老師給這些孩子分發糖果 每個孩子至少分配到 1 個糖果。相鄰的孩子中,評分高的孩子必須獲得更多的糖果。那麼這樣下來,老師至少需...

leetcode135 分發糖果

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