雙指標解決發餅乾問題(leetcode455)

2021-10-12 21:38:37 字數 1085 閱讀 9689

今天是聖誕節,正好遇到的乙個發糖果的題目,也算是應景(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...