135. 分發糖果
老師想給孩子們分發糖果,有 N 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。
你需要按照以下要求,幫助老師給這些孩子分發糖果:
- 每個孩子至少分配到 1 個糖果。
- 相鄰的孩子中,評分高的孩子必須獲得更多的糖果。
那麼這樣下來,老師至少需要準備多少顆糖果呢?
示例 1:
輸入: [1,0,2]
輸出: 5
解釋: 你可以分別給這三個孩子分發 2、1、2 顆糖果。
示例 2:
輸入: [1,2,2]
輸出: 4
解釋: 你可以分別給這三個孩子分發 1、2、1 顆糖果。
第三個孩子只得到 1 顆糖果,這已滿足上述兩個條件。
基本思路:本問題可以拆分成兩個部分,從左往右和從右往左看都符合要求:
- 從左往右看,若ratings[i]>ratings[i-1],那麼第i個孩子一定比i-1個孩子獲得的果子多,否則為1,
- 從右往左看,若ratings[i]>ratings[i+1],那麼第i個孩子一定比i+1個孩子獲得的果子多,否則為1,
- 對於同一個位置的,去兩者之間最大的就一定可以滿足要求
int candy(vector<int>& ratings) {
int len=ratings.size();
int ans=0;
int cnt=1;
vector<int> leftCal(len,0);
for(int i=1;i<len;i++){
if(ratings[i]>ratings[i-1])
cnt++;
else
cnt=1;
leftCal[i]=cnt;
}
cnt=1;
for(int i=len-1;i>=0;i--){
if(i<len-1&&ratings[i]>ratings[i+1]){
cnt++;
}
else
cnt=1;
ans+=max(leftCal[i],cnt);
}
return ans;
}
基本思路:實質上和上面的方法相同,從左往右看,如果單增和上述的方法相同;但是如果遇到單減序列,可以看作從右往左的單增序列,或者是將遞減序列逆轉,
- 對於一個先增後減的序列,頂點屬於誰?主要看左右兩邊序列的長度
int candy(vector<int>& ratings) {
int inc=1,des=0,res=1,len=ratings.size();
for(int i=1;i<len;i++){
if(ratings[i]>=ratings[i-1]){
dec=0;
pre=(ratings[i]==ratings[i-1])?1:pre+1;
res+=pre;
inc=pre; //記錄嚴格遞增的元素個數
}
else{
dec++;
if(inc==dec){ //說明從右往左看更大,頂點算在遞減序列上
dec++;
}
res+=dec;
pre=1;
}
}
return ans;
}
相關文章
- leetcode 135. 分發糖果 (相鄰的孩子中,評分高的必須糖果更多) 思維LeetCode
- LeetCode 分發糖果LeetCode
- LeetCode135. 分發糖果LeetCode
- 575. 分糖果
- 發糖果
- LeetCode 1103[分糖果II]LeetCode
- 【LeetCode】貪心演算法–分發糖果(135)LeetCode演算法
- python演算法:分糖果Python演算法
- 程式碼隨想錄演算法訓練營 | 134. 加油站,135. 分發糖果,860.檸檬水找零,406.根據身高重建佇列演算法佇列
- 135. Candy
- 三分鐘看完「分糖果」演算法問題演算法
- 東華OJ 陣列競賽 分糖果陣列
- [LeetCode] 135. CandyLeetCode
- 程式碼隨想錄演算法訓練營第三十五天 | 1005.K次取反後最大化的陣列和 134.加油站 135.分發糖果演算法陣列
- P8518 [IOI2021] 分糖果 題解
- 分糖果 II(不是所有的轉都難,注意下標)
- 糖果世界模式系統應用開發模式
- 吃糖果的概率
- 34天【程式碼隨想錄演算法訓練營34期】第八章 貪心演算法 part03 (● 1005.K次取反後最大化的陣列和 ● 134. 加油站 ● 135. 分發糖果 )演算法陣列
- 135. Candy(Leetcode每日一題-2020.12.24)--抄答案LeetCode每日一題
- 可以獎勵幾個糖果
- King連發兩款“糖果”IP新遊戲,成功前景幾何?遊戲
- kedaOJ#P0764. 小可的糖果盒
- P8687 [藍橋杯 2019 省 A] 糖果
- 51nod1548 歐姆諾姆和糖果
- Alien Skin Eye Candy 7 for Mac(PS眼睛糖果濾鏡)Mac
- 入門必讀:糖果,空投,擼羊毛都是什麼?
- 自媒體一鍵分發工具,不僅可以分發文章,還可以分發影片
- 洛谷P4074糖果公園(帶修莫隊)
- 短影片一鍵分發平臺,3分鐘分發全平臺
- Flutter 事件分發Flutter事件
- android 事件分發Android事件
- Alien Skin Eye Candy 7 for Mac(PS眼睛糖果濾鏡)漢化Mac
- Alien Skin Eye Candy 7 Mac(眼睛糖果PS濾鏡外掛)Mac
- 藍橋杯 演算法提高 拿糖果(完全揹包dp)演算法
- candy.one 新增一款射擊贏糖果遊戲遊戲
- 影片分發軟體,幫你一鍵分發短影片
- Android事件分發機制三:事件分發工作流程Android事件