日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 455. 分发饼干 思考分析

發布時間:2023/12/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 455. 分发饼干 思考分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

    • 題目
    • 自己的思路以及AC代碼
    • 參考思路

題目

假設你是一位很棒的家長,想要給你的孩子們一些小餅干。但是,每個孩子最多只能給一塊餅干。
對每個孩子 i,都有一個胃口值 g[i],這是能讓孩子們滿足胃口的餅干的最小尺寸;并且每塊餅干 j,都有一個尺寸 s[j] 。如果 s[j] >= g[i],我們可以將這個餅干 j 分配給孩子 i ,這個孩子會得到滿足。你的目標是盡可能滿足越多數量的孩子,并輸出這個最大數值。

提示:

自己的思路以及AC代碼

首先將數組s、g排序(按照值從小到大),這樣就將小胃口孩子,小尺寸的餅干放在前面了。
接下來對餅干進行遍歷:
如果這個餅干大于當前的孩子胃口,把它給這個孩子,轉向下一個孩子,餅干也到下一個餅干。
如果不滿足,孩子還是當前的孩子,餅干轉到下一個餅干。
這樣就能保證每個孩子吃到的是滿足胃口的最小的尺寸餅干了。我想這也許就是貪心吧。
下面是AC代碼:

class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {//將孩子按照胃口大小排序,從小到大sort(g.begin(), g.end());//將餅干按照尺寸大小排序,從小到大sort(s.begin(), s.end());int i=0;for(int j=0;j<s.size();j++){if(i<g.size() && s[j] >= g[i]) {i++;}}return i; } };

接下來看看我參考的公眾號的思路:

參考思路

大尺寸的餅干既可以滿足胃口大的孩子也可以滿足胃口小的孩子,那么就應該優先滿足胃口大的。
局部最優:大餅干喂給胃口大的,充分利用餅干尺寸喂飽一個。
全局最優就是喂飽盡可能多的小孩。
從后向前遍歷小孩數組,用大餅干優先滿足胃口大的,并統計小孩數量。
這個思路正好和我是反過來的。
從代碼實現上來說,我的外才能循環是餅干尺寸s,而這里的代碼外層循環是胃口g。

class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {//將孩子按照胃口大小排序,從小到大sort(g.begin(), g.end());//將餅干按照尺寸大小排序,從小到大sort(s.begin(), s.end());//餅干從最大的開始int j=s.size()-1;int result=0;//胃口從大到小for(int i=g.size()-1;i<g.size();i--){if(j>=0 && s[j] >= g[i]) {j--;result++;}}return result; } }; 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的leetcode 455. 分发饼干 思考分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。