今天是聖誕節,正好遇到的乙個發糖果的題目,也算是應景(leetcode455)。
假設你是一位很棒的家長,想要給你的孩子們一些小餅乾。但是,每個孩子最多只能給一塊餅乾。
對每個孩子 i,都有乙個胃口值 g[i],這是能讓孩子們滿足胃口的餅乾的最小尺寸;並且每塊餅乾 j,都有乙個尺寸 s[j] 。如果 s[j]
>= g[i],我們可以將這個餅乾 j 分配給孩子 i ,這個孩子會得到滿足。你的目標是盡可能滿足越多數量的孩子,並輸出這個最大數值。
示例 1
:輸入: g =[1
,2,3
], s =[1
,1]輸出:
1解釋:
你有三個孩子和兩塊小餅乾,3個孩子的胃口值分別是:1,2
,3。雖然你有兩塊小餅乾,由於他們的尺寸都是1,你只能讓胃口值是1的孩子滿足。
所以你應該輸出1。
示例 2
:輸入: g =[1
,2], s =[1
,2,3
]輸出:
2解釋:
你有兩個孩子和三塊小餅乾,2個孩子的胃口值分別是1,2。
你擁有的餅乾數量和尺寸都足以讓所有孩子滿足。
所以你應該輸出2.
題目的意思很明確,滿足孩子的胃口,最多可以搞定幾個孩子。
我想到的是貪心演算法,拿出最小的糖果,給胃口最小的孩子試試,滿足了,這個孩子出隊,不滿足,就換個稍大點的糖果。
所以呢,先排序,再乙個乙個試就可以了。直接上**
public int
findcontentchildren
(int
g,int[
] s)
arrays.
sort
(g);
arrays.
sort
(s);
int m =
0, n =
0, result =0;
while
(m < g.length && n < s.length)
}return result;
}
總體來說,這個題目理解起來,容易些 雙指標解決陣列排序問題
這個問題如果注意,用一句就可以解決 sort nums.begin nums.end 完事。但是人家明確說了,不能用 庫中的排序函式。我們就得自己去實現排序。其實這個問題很簡單,因為裡面只有三種顏色,用0 1 2 表示。思想也很簡單,就是我們用雙指標遍歷陣列。如果遇到0放在前面,遇到1就在那個位置,...
雙指標解決陣列鍊錶問題
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。輸入 nums 1,2,3,4 輸出 1,3,2,4 注 3,1,2,4 也是正確的答案之一。0 nums.length 50000 1 nums i 10000 一 雙指標,取餘 1...
雙指標問題
雙指標可用於多種情景之下,用於查詢陣列中滿足條件的數,coding utf 8 查詢三個數加起來等於0 def findthreesum nums,target 0 nums.sort res for left in xrange nums.len if left 0 and nums left n...