# \#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`