摘要:貪心法復(fù)雜度時間空間思路典型的貪心法,如果一個孩子比另一個孩子的分高,我們只多給塊糖。我們可以先從左往右遍歷,確保每個孩子根他左邊的孩子相比,如果分高,則糖要多個,如果分比左邊低,就只給一顆。
Candy
貪心法 復(fù)雜度There are N children standing in a line. Each child is assigned a rating value.
You are giving candies to these children subjected to the following requirements:
Each child must have at least one candy. Children with a higher rating get more candies than their neighbors. What is the minimum candies you must give?
時間 O(N) 空間 O(N)
思路典型的貪心法,如果一個孩子比另一個孩子的分高,我們只多給1塊糖。我們可以先從左往右遍歷,確保每個孩子根他左邊的孩子相比,如果分高,則糖要多1個,如果分比左邊低,就只給一顆。然后我們再從右往左遍歷,確保每個孩子跟他右邊的孩子相比,如果分高則糖至少多1個(這里至少多1個的意思是,我們要取當(dāng)前孩子手里糖的數(shù)量,和其右邊孩子糖的數(shù)量加1,兩者的較大值)。
代碼public class Solution { public int candy(int[] ratings) { if(ratings.length <= 1){ return ratings.length; } int[] candies = new int[ratings.length]; candies[0] = 1; // 先從左往右分糖,分?jǐn)?shù)較高的多拿一顆糖,分?jǐn)?shù)較少的只拿一顆糖 for(int i = 1; i < ratings.length; i++){ if(ratings[i] > ratings[i - 1]){ candies[i] = candies[i - 1] + 1; } else { candies[i] = 1; } } int sum = candies[candies.length - 1]; // 再從右往左繼續(xù)分糖,分?jǐn)?shù)較高的確保比右邊多一顆就行了 for(int i = ratings.length - 2; i >= 0; i--){ if(ratings[i] > ratings[i + 1]){ candies[i] = Math.max(candies[i + 1] + 1, candies[i]); } sum += candies[i]; } return sum; } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/64629.html
摘要:保證高的小朋友拿到的糖果更多,我們建立一個分糖果數(shù)組。首先,分析邊界條件如果沒有小朋友,或者只有一個小朋友,分別對應(yīng)沒有糖果,和有一個糖果。排排坐,吃果果。先往右,再往左。右邊高,多一個。總和加上小朋友總數(shù),就是要準(zhǔn)備糖果的總數(shù)啦。 Problem There are N children standing in a line. Each child is assigned a rat...
摘要:題目要求假設(shè)有個孩子站成一排,每個孩子擁有一個評估值。我們可以觀察到,每次最遠(yuǎn)只需要額外分發(fā)到距離當(dāng)前最近的評分最高的那個孩子。因為他的糖果數(shù)量的增加并不會影響到之前孩子。當(dāng)有多個最近評分最高的孩子時,則選擇最后一個。 題目要求 There are N children standing in a line. Each child is assigned a rating value....
摘要:今日題目老師想給孩子們分發(fā)糖果,有個孩子站成了一條直線,老師會根據(jù)每個孩子的表現(xiàn),預(yù)先給他們評分。相鄰的孩子中,評分高的孩子必須獲得更多的糖果。示例輸入輸出解釋你可以分別給這三個孩子分發(fā)顆糖果。第三個孩子只得到顆糖果,這已滿足上述兩個條件。 今日題目 老師想給孩子們分發(fā)糖果,有N個孩子站成了一條直線,老師會根據(jù)每個孩子的表現(xiàn),預(yù)先給他們評分。你需要按照以下要求,幫助老師給這些孩子分發(fā)糖...
摘要:買糖果題目來源京東實習(xí)生招聘原題鏈接可在線提交賽碼網(wǎng)問題描述某糖果公司專門生產(chǎn)兒童糖果,它最受兒童歡迎的糖果有兩個序列,均采用盒式包裝。小東希望你能幫她解決這一問題。 最近比較忙,又有一段時間沒寫題目了,終于在前幾天把賽碼網(wǎng)上,JD的2016秋招和2017實習(xí)生招聘剩下的4星難度題目做了,至此所有4星難度題目都解決了,5星難度題目還剩下一個應(yīng)該是計算幾何學(xué)的題目,因為這塊我不熟悉,后面...
摘要:純函數(shù)式狀態(tài)隨機(jī)數(shù)生成器很明顯,原有的函數(shù)不是引用透明的,這意味著它難以被測試組合并行化。售貨機(jī)在輸出糖果時忽略所有輸入本章知識點惰性求值函數(shù)式狀態(tài) 第二節(jié)?惰性求值與函數(shù)式狀態(tài) 在下面的代碼中我們對List數(shù)據(jù)進(jìn)行了一些處理 List(1,2,3,4).map(_ + 10).filter(_ % 2 == 0).map(_ * 3) 考慮一下這段程序是如何求值的,如果我們跟蹤一下...
閱讀 1478·2021-10-14 09:43
閱讀 1442·2021-10-09 09:58
閱讀 1937·2021-09-28 09:42
閱讀 3728·2021-09-26 09:55
閱讀 1752·2021-08-27 16:23
閱讀 2756·2021-08-23 09:46
閱讀 906·2019-08-30 15:55
閱讀 1405·2019-08-30 15:54