老師想給孩子們分發糖果,有 n 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。
你需要按照以下要求,幫助老師給這些孩子分發糖果:
每個孩子至少分配到 1 個糖果。
相鄰的孩子中,評分高的孩子必須獲得更多的糖果。
那麼這樣下來,老師至少需要準備多少顆糖果呢?
示例 1:
輸入: [1,0,2]
輸出: 5
解釋: 你可以分別給這三個孩子分發 2、1、2 顆糖果。
貪心,o(n)首先給每個孩子分配乙個保底的糖果,然後
從左到右遍歷陣列,保證每個位置和它的左鄰居都符合邏輯,如果當前位置的評分比左邊的高就把當前孩子的糖果數設為左邊的糖果數+1
從右到左遍歷陣列,保證每個位置和它的右鄰居都符合邏輯,這一次假如當前位置的評分比右邊的高就把當前孩子的糖果數設為原來的糖果數和右邊的糖果數+1 這兩者之間的最大值,這樣一來就保證了第二次遍歷陣列,每個位置的糖果數隻增不減,所以不會破壞第一遍遍歷的邏輯
class solution
//從右到左遍歷陣列,保證每個位置和它的右鄰居都符合邏輯
for(int i=vec.size()-2;i>=0;--i)
int res=0;
for(auto i:vec)
res +=i;
return res;
}};
LeetCode 135 分發糖果
老師想給孩子們分發糖果,有 n 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。你需要按照以下要求,幫助老師給這些孩子分發糖果 每個孩子至少分配到 1 個糖果。相鄰的孩子中,評分高的孩子必須獲得更多的糖果。那麼這樣下來,老師至少需要準備多少顆糖果呢?示例 1 輸入 1,0,2 輸出 ...
leetcode135 分發糖果
一道很有意思的題目,難度級別為 困難。題目是這樣的的 老師想給孩子們分發糖果,有 n 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。你需要按照以下要求,幫助老師給這些孩子分發糖果 每個孩子至少分配到 1 個糖果。相鄰的孩子中,評分高的孩子必須獲得更多的糖果。那麼這樣下來,老師至少需...
leetcode135 分發糖果
老師想給孩子們分發糖果,有 n 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。你需要按照以下要求,幫助老師給這些孩子分發糖果 每個孩子至少分配到 1 個糖果。相鄰的孩子中,評分高的孩子必須獲得更多的糖果。那麼這樣下來,老師至少需要準備多少顆糖果呢?示例 1 輸入 1,0,2 輸出 ...