---
# System prepended metadata

title: \#455 Assign Cookies
tags: [application problem, leetcode, leetcode-easy]

---

# \#455 Assign Cookies
## *給定陣列s[], g[]分別代表每個小孩的需求度和每塊餅乾的滿足度, 當g[j]>=s[i]時, 表示這塊餅乾可以滿足這個小孩(一塊餅單只能給一個小孩, 回傳這些餅乾最多能滿足的小孩數*
## Log
 - build 20210828 by syhuang

## 初見
 - 對s,j升冪排列, 以遍求最多能發放的小孩數
 - 用兩個pointer i, j分別用在s[]和g[], 判斷當前餅乾是否滿足這個小孩, 是則i++ ,j++(代表這塊餅乾發給這個小孩)
 - 不滿足時, 僅j++(換下一塊次大的餅乾), 直到滿足為止
 - 當小孩全部滿足; 或是餅乾發到結束, 就表示迴圈結束, 回傳小孩-餅乾配對數量就是能發放最多的人數
 - 時間複雜度O(nlogn)
 - leetcode submit runtime 29%, memory 94%
```javascript=
var findContentChildren = function(g, s) {
    //先將s和g升冪排序, 方便知道是否已經滿足題意發足cookie
    let toBeReleasedS = s.sort(function(a,b){return a-b});
    let queuedG = g.sort(function(a,b){return a-b});
    let result = 0;
    
    //對每個小孩子發cookie, 發到cookie發完或是發到最後一位小孩時結束
    for(let i=0,j=0; i<queuedG.length && j<toBeReleasedS.length;){
        if(toBeReleasedS[j]>=queuedG[i]){//cookie滿足小孩
            j++,i++;
            result++;
        }else{//cookie未能滿足小孩, 拿更大的cookie
            j++;
        }
    }
    
    return result;    
};
```
## 備註
- 初見即畢業
## 參考
###### tags: `leetcode`, `leetcode-easy`, `application problem`