在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

貪心算法:分發餅干

算法與數據結構 ? 來源:代碼隨想錄 ? 作者:代碼隨想錄 ? 2022-06-06 09:25 ? 次閱讀

貪心的第一道題目,快看看你夠不夠貪心

455.分發餅干

力扣題目鏈接:https://leetcode-cn.com/problems/assign-cookies

假設你是一位很棒的家長,想要給你的孩子們一些小餅干。但是,每個孩子最多只能給一塊餅干。

對每個孩子 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.

提示:

  • 1 <= g.length <= 3 * 10^4
  • 0 <= s.length <= 3 * 10^4
  • 1 <= g[i], s[j] <=?2^31 - 1

思路

為了了滿足更多的小孩,就不要造成餅干尺寸的浪費。

大尺寸的餅干既可以滿足胃口大的孩子也可以滿足胃口小的孩子,那么就應該優先滿足胃口大的。

這里的局部最優就是大餅干喂給胃口大的,充分利用餅干尺寸喂飽一個,全局最優就是喂飽盡可能多的小孩

可以嘗試使用貪心策略,先將餅干數組和小孩數組排序。

然后從后向前遍歷小孩數組,用大餅干優先滿足胃口大的,并統計滿足小孩數量。

如圖:

3d55a436-e537-11ec-ba43-dac502259ad0.png455.分發餅干

這個例子可以看出餅干9只有喂給胃口為7的小孩,這樣才是整體最優解,并想不出反例,那么就可以擼代碼了。

C++代碼整體如下:

//時間復雜度:O(nlogn)
//空間復雜度:O(1)
classSolution{
public:
intfindContentChildren(vector<int>&g,vector<int>&s){
sort(g.begin(),g.end());
sort(s.begin(),s.end());
intindex=s.size()-1;//餅干數組的下表
intresult=0;
for(inti=g.size()-1;i>=0;i--){
if(index>=0&&s[index]>=g[i]){
result++;
index--;
}
}
returnresult;
}
};

從代碼中可以看出我用了一個index來控制餅干數組的遍歷,遍歷餅干并沒有再起一個for循環,而是采用自減的方式,這也是常用的技巧。

有的同學看到要遍歷兩個數組,就想到用兩個for循環,那樣邏輯其實就復雜了。

也可以換一個思路,小餅干先喂飽小胃口

代碼如下:

classSolution{
public:
intfindContentChildren(vector<int>&g,vector<int>&s){
sort(g.begin(),g.end());
sort(s.begin(),s.end());
intindex=0;
for(inti=0;iif(indexreturnindex;
}
};

總結

這道題是貪心很好的一道入門題目,思路還是比較容易想到的。

文中詳細介紹了思考的過程,想清楚局部最優,想清楚全局最優,感覺局部最優是可以推出全局最優,并想不出反例,那么就試一試貪心

其他語言版本

Java

classSolution{
//思路1:優先考慮餅干,小餅干先喂飽小胃口
publicintfindContentChildren(int[]g,int[]s){
Arrays.sort(g);
Arrays.sort(s);
intstart=0;
intcount=0;
for(inti=0;iif(s[i]>=g[start]){
start++;
count++;
}
}
returncount;
}
}
classSolution{
//思路2:優先考慮胃口,先喂飽大胃口
publicintfindContentChildren(int[]g,int[]s){
Arrays.sort(g);
Arrays.sort(s);
intcount=0;
intstart=s.length-1;
//遍歷胃口
for(intindex=g.length-1;index>=0;index--){
if(start>=0&&g[index]<=?s[start])?{
????????????????start--;
????????????????count++;
????????????}
????????}
????????returncount;
}
}

Python

class Solution:
    # 思路1:優先考慮胃餅干
    def findContentChildren(self, g: List[int], s: List[int]) -> int:
        g.sort()
        s.sort()
        res = 0
        for i in range(len(s)):
            if res = g[res]:  #小餅干先喂飽小胃口
                res += 1
        return res
classSolution:
#思路2:優先考慮胃口
deffindContentChildren(self,g:List[int],s:List[int])->int:
g.sort()
s.sort()
start,count=len(s)-1,0
forindexinrange(len(g)-1,-1,-1):#先喂飽大胃口
ifstart>=0andg[index]<=?s[start]:
????????????????start?-=?1
count+=1
returncount

Go

//排序后,局部最優
funcfindContentChildren(g[]int,s[]int)int{
sort.Ints(g)
sort.Ints(s)

//從小到大
child:=0
forsIdx:=0;childlen(g)&&sIdxlen(s);sIdx++{
ifs[sIdx]>=g[child]{//如果餅干的大小大于或等于孩子的為空則給與,否則不給予,繼續尋找選一個餅干是否符合
child++
}
}

returnchild
}

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4622

    瀏覽量

    93057
  • 數組
    +關注

    關注

    1

    文章

    417

    瀏覽量

    25979

原文標題:分發餅干,也要貪心

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【「從算法到電路—數字芯片算法的電路實現」閱讀體驗】+內容簡介

    內容簡介這是一本深入解讀基礎算法及其電路設計,以打通算法研發到數字IC設計的實現屏障,以及指導芯片設計工程師從底層掌握復雜電路設計與優化方法為目標的專業技術書。任何芯片(如WiFi芯片、5G芯片
    發表于 11-21 17:14

    【「從算法到電路—數字芯片算法的電路實現」閱讀體驗】+介紹基礎硬件算法模塊

    作為嵌入式開發者往往比較關注硬件和軟件的協調。本書介紹了除法器,信號發生器,濾波器,分頻器等基本算法的電路實現,雖然都是基礎內容,但是也是最常用到的基本模塊。 隨著逆全球化趨勢的出現,過去的研發
    發表于 11-21 17:05

    OPPO應用分發的燎原之火,照亮開發者的增長之路

    全面賦能應用分發,“火炬手”OPPO闖出一條增長之路
    的頭像 發表于 10-18 13:34 ?1388次閱讀
    OPPO應用<b class='flag-5'>分發</b>的燎原之火,照亮開發者的增長之路

    華納云:如何理解內容分發網絡(CDN)

    分發網絡(CDN)是一種網絡架構,旨在提高用戶對網站、應用程序或其他互聯網內容的訪問速度和性能。CDN 的主要原理是通過在全球范圍內部署分布式服務器,將內容緩存并提供給用戶距離Z近的服務器,從而減少加載時間、提高可用性和降低網絡延遲。
    的頭像 發表于 09-27 16:26 ?260次閱讀

    RobustRIO-E模塊 時鐘同步&分發,實現聲音與振動板卡間及跨機箱時鐘同步

    同步時鐘發生器 + 同步時鐘分發
    的頭像 發表于 09-14 15:00 ?299次閱讀
    RobustRIO-E模塊 時鐘同步&<b class='flag-5'>分發</b>,實現聲音與振動板卡間及跨機箱時鐘同步

    使用 BQ25180 線性充電器充分發揮NTC的全部潛力

    電子發燒友網站提供《使用 BQ25180 線性充電器充分發揮NTC的全部潛力.pdf》資料免費下載
    發表于 09-09 09:32 ?0次下載
    使用 BQ25180 線性充電器充<b class='flag-5'>分發</b>揮NTC的全部潛力

    FPGA-5G通信算法的基本套路

    很6的,也就那幾家。 對于5G基站而言,其典型的部署場景如圖4所示。 圖4 5G NR基站架構部署場景 話說回來,通信發射機的設計,在業界來看,不是主要挑戰,核心算法也沒幾個,當然難點也是有的
    發表于 08-15 17:34

    深度學習的基本原理與核心算法

    處理、語音識別等領域取得了革命性的突破。本文將詳細闡述深度學習的原理、核心算法以及實現方式,并通過一個具體的代碼實例進行說明。
    的頭像 發表于 07-04 11:44 ?2215次閱讀

    神經網絡反向傳播算法的優缺點有哪些

    是一種模擬人腦神經元網絡的計算模型,具有強大的非線性映射能力和泛化能力。反向傳播算法是訓練神經網絡的核心算法,通過梯度下降法優化網絡權重,使網絡輸出盡可能接近目標值。然而,反向傳播算法也存在一些局限性和問題,需要在實際應用中加以
    的頭像 發表于 07-03 11:24 ?1086次閱讀

    構建鴻蒙生態服務分發新體驗,鴻蒙元服務助力伙伴服務創新

    6月22日,華為開發者大會(HDC 2024)元服務服務分發分論壇現場 當前,鴻蒙生態伙伴正在同步開發元服務,包括新華社、網上國網、南方航空、廣發銀行、奈雪的茶、肯德基、同程旅行、捷停車等,作為
    的頭像 發表于 06-24 14:55 ?422次閱讀

    AI智算中心算力服務商探索智造完成A輪融資

    近日,領先的AI智算中心算力服務商探索智造宣布成功完成A輪融資。本輪融資由無錫云林產業發展投資基金領投,旨在為公司提供強大的資金支持,助力其業務的進一步拓展和升級。
    的頭像 發表于 05-30 09:33 ?445次閱讀

    機器學習六大核心算法深度解析

    算法歷程:線性回歸是一種古老的統計方法,它試圖找到最佳擬合數據的直線或超平面,最早可以追溯到19世紀初的高斯最小二乘法理論。
    發表于 04-23 16:25 ?1869次閱讀
    機器學習六大核<b class='flag-5'>心算法</b>深度解析

    基于門控線性網絡(GLN)的高壓縮比無損醫學圖像壓縮算法

    實現基于門控線性網絡(GLN)的高壓縮比無損醫學圖像壓縮算法,以提高醫學圖像存儲和分發系統的效率。與“傳統”的基于上下文的數據壓縮算法相比,基于GLN的系統使用一組不同的上下文模型。
    的頭像 發表于 04-08 10:29 ?683次閱讀
    基于門控線性網絡(GLN)的高壓縮比無損醫學圖像壓縮<b class='flag-5'>算法</b>

    陀螺儀芯片+傳感器定制

    本人想開發一套摔倒瞬間的觸發系統,目前缺主程序核心算法。有懂的大神求指教
    發表于 03-21 10:36

    長沙超算中心算力重歸國際一流水平 同時湖南公布2024年十大產業項目

    長沙超算中心算力重歸國際一流水平 同時湖南公布2024年十大產業項目 長沙積極打造成全球研發中心城市;長沙產業發展迅速,已經形成新一代自主安全計算系統國家級先進制造業集群。 據湖南省政府工作報告數據
    的頭像 發表于 01-25 16:04 ?2125次閱讀
    主站蜘蛛池模板: 欧美乱码视频| 黄色三级网站| 狠狠色狠狠色| 国产精品14p| sihu国产午夜精品一区二区三区| 91成人免费在线视频| 永久影视| 清纯唯美亚洲综合一区| 国产成人影院在线观看| 黄在线观看网站| 男人的午夜| 五月婷婷色丁香| 日韩精品系列产品| 九色伊人| 1024人成网站色| 手机看片久久| 911精品国产91久久久久| 123456成年免费视频| 在线观看三级网站| 色玖玖| 国产图片区| 天天爽夜夜操| 在线视频永久在线视频| 三级黄a| 特黄特黄视频| 狠狠色噜噜狠狠狠狠色综合久| 亚洲第一网站快活影院| 国产精品久久福利网站| 亚洲精品成人网| 泰剧天堂| 国内外精品免费视频| 天天干天天透| 欧美18在线| 亚洲字幕久久| 玖玖玖精品视频免费播放| 亚洲综合丁香| 国产一级做a爱免费观看| 午夜免费啪在线观看视频网站| 国产美女久久| 韩漫免费网站无遮挡羞羞漫画| 三级在线观看网站|