Lintcode 1230解题思路和c++代码
1230. 分餅干
題目:
假設(shè)你是一個(gè)了不起的家長(zhǎng),準(zhǔn)備給你的孩子們一些餅干吃,但是你只能給每個(gè)孩子至多一塊餅干。每一塊餅干jj都有一個(gè)尺寸s_{j}s?j
;同時(shí)每一個(gè)孩子ii都有一個(gè)貪吃指數(shù)g_{i}g?i
,代表了能使他滿足的最小的餅干尺寸。如果s_{j} \geq g_{i}sj
≥g?i
?? ,那么就可以將餅干jj分給孩子ii使他得到滿足。你的目標(biāo)是使最多的孩子得到滿足,輸出這個(gè)最大值。
樣例
樣例1:
輸入:[1,2,3], [1,1]
輸出:1
說(shuō)明:你有三個(gè)孩子和兩塊餅干,三個(gè)孩子的貪吃指數(shù)分別是1,2,3
雖然你有兩塊餅干,但是因?yàn)樗鼈兊拇笮《紴?,你只能滿足讓貪吃指數(shù)為1的孩子滿足,因此你應(yīng)該輸出1
樣例2:
輸入:[1,2], [1,2,3]
輸出:2
說(shuō)明:你有兩個(gè)孩子和三塊餅干,兩個(gè)孩子的貪吃指數(shù)分別是1和2
這三塊餅干的大小足以滿足所有的孩子,因此你應(yīng)該輸出2
注意事項(xiàng)
貪吃指數(shù)總會(huì)是一個(gè)正整數(shù)
你不能將一塊以上的餅干分配給同一個(gè)孩子
解題思路:
1.總體的來(lái)說(shuō)這道題并不是很難,但是我卻花了三十多分鐘才完整地做出來(lái),主要是自己本身的問(wèn)題;
問(wèn)題①:沒(méi)有看清楚題意,一開(kāi)始并沒(méi)有看到一個(gè)孩子只能吃一個(gè),一位一個(gè)孩子能吃多個(gè),導(dǎo)致了整體思路錯(cuò)誤;
問(wèn)題②:s對(duì)應(yīng)的是j,g對(duì)應(yīng)的是i,但是在判斷的時(shí)候我卻寫(xiě)了
s[i]>=g[j],導(dǎo)致了結(jié)果一直過(guò)不了;
2.接下來(lái)講講解題思路:
主要是先把兩個(gè)數(shù)列排序,然后最小與最小的匹配,如果能夠匹配,那么兩個(gè)下標(biāo)都往下走,如果不能,那么cookie的下標(biāo)往下走,小孩子的小標(biāo)不動(dòng)。最后知道餅干分完或者小孩子沒(méi)有了跳出循環(huán)。
附上代碼:
int n=g.size(),m=s.size();sort(g.begin(),g.end());sort(s.begin(),s.end());int sum=0,i=0,j=0;while(i<n&&j<m){if(s[j]>=g[i]) {i++;} j++;}return i;總結(jié)
以上是生活随笔為你收集整理的Lintcode 1230解题思路和c++代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Lintcode 993 解题思路和c+
- 下一篇: 关于牛顿迭代法