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