chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

貪心算法:分發(fā)餅干

算法與數(shù)據(jù)結(jié)構(gòu) ? 來(lái)源:代碼隨想錄 ? 作者:代碼隨想錄 ? 2022-06-06 09:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

455.分發(fā)餅干

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

假設(shè)你是一位很棒的家長(zhǎng),想要給你的孩子們一些小餅干。但是,每個(gè)孩子最多只能給一塊餅干。

對(duì)每個(gè)孩子 i,都有一個(gè)胃口值 g[i],這是能讓孩子們滿足胃口的餅干的最小尺寸;并且每塊餅干 j,都有一個(gè)尺寸 s[j]。如果 s[j]>= g[i],我們可以將這個(gè)餅干 j 分配給孩子 i ,這個(gè)孩子會(huì)得到滿足。你的目標(biāo)是盡可能滿足越多數(shù)量的孩子,并輸出這個(gè)最大數(shù)值。

示例1:

  • 輸入: g = [1,2,3], s = [1,1]
  • 輸出: 1 解釋:你有三個(gè)孩子和兩塊小餅干,3個(gè)孩子的胃口值分別是:1,2,3。雖然你有兩塊小餅干,由于他們的尺寸都是1,你只能讓胃口值是1的孩子滿足。所以你應(yīng)該輸出1。

示例2:

  • 輸入: g = [1,2], s = [1,2,3]
  • 輸出: 2
  • 解釋:你有兩個(gè)孩子和三塊小餅干,2個(gè)孩子的胃口值分別是1,2。你擁有的餅干數(shù)量和尺寸都足以讓所有孩子滿足。所以你應(yīng)該輸出2.

提示:

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

思路

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

大尺寸的餅干既可以滿足胃口大的孩子也可以滿足胃口小的孩子,那么就應(yīng)該優(yōu)先滿足胃口大的。

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

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

然后從后向前遍歷小孩數(shù)組,用大餅干優(yōu)先滿足胃口大的,并統(tǒng)計(jì)滿足小孩數(shù)量。

如圖:

3d55a436-e537-11ec-ba43-dac502259ad0.png455.分發(fā)餅干

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

C++代碼整體如下:

//時(shí)間復(fù)雜度:O(nlogn)
//空間復(fù)雜度: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;//餅干數(shù)組的下表
intresult=0;
for(inti=g.size()-1;i>=0;i--){
if(index>=0&&s[index]>=g[i]){
result++;
index--;
}
}
returnresult;
}
};

從代碼中可以看出我用了一個(gè)index來(lái)控制餅干數(shù)組的遍歷,遍歷餅干并沒(méi)有再起一個(gè)for循環(huán),而是采用自減的方式,這也是常用的技巧。

有的同學(xué)看到要遍歷兩個(gè)數(shù)組,就想到用兩個(gè)for循環(huán),那樣邏輯其實(shí)就復(fù)雜了。

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

代碼如下:

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;
}
};

總結(jié)

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

文中詳細(xì)介紹了思考的過(guò)程,想清楚局部最優(yōu),想清楚全局最優(yōu),感覺(jué)局部最優(yōu)是可以推出全局最優(yōu),并想不出反例,那么就試一試貪心。

其他語(yǔ)言版本

Java

classSolution{
//思路1:優(yōu)先考慮餅干,小餅干先喂飽小胃口
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:優(yōu)先考慮胃口,先喂飽大胃口
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:優(yōu)先考慮胃餅干
    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:優(yōu)先考慮胃口
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

//排序后,局部最優(yōu)
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]{//如果餅干的大小大于或等于孩子的為空則給與,否則不給予,繼續(xù)尋找選一個(gè)餅干是否符合
child++
}
}

returnchild
}

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4743

    瀏覽量

    96867
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    420

    瀏覽量

    27048

原文標(biāo)題:分發(fā)餅干,也要貪心

文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    簡(jiǎn)化定位,從exgnss擴(kuò)展庫(kù)開(kāi)始:GNSS開(kāi)發(fā)從此“輕裝上陣”

    面對(duì)GNSS定位開(kāi)發(fā)的重重挑戰(zhàn),exgnss擴(kuò)展庫(kù)為你減負(fù)!它整合了核心算法與硬件適配,開(kāi)發(fā)者無(wú)需重復(fù)造輪子,即可快速構(gòu)建穩(wěn)定、低功耗的定位應(yīng)用。
    的頭像 發(fā)表于 09-16 17:43 ?574次閱讀
    簡(jiǎn)化定位,從exgnss擴(kuò)展庫(kù)開(kāi)始:GNSS開(kāi)發(fā)從此“輕裝上陣”

    液態(tài)金屬電阻率測(cè)試儀的核心算法與信號(hào)處理技術(shù)

    液態(tài)金屬電阻率測(cè)試儀之所以能在科研與工業(yè)領(lǐng)域精準(zhǔn)捕捉液態(tài)金屬的電學(xué)特性,背后離不開(kāi)核心算法與信號(hào)處理技術(shù)的協(xié)同支撐。這兩大技術(shù)如同測(cè)試儀的“智慧大腦” 與 “敏銳感官”,前者負(fù)責(zé)將原始測(cè)量數(shù)據(jù)轉(zhuǎn)化
    的頭像 發(fā)表于 09-01 09:21 ?315次閱讀
    液態(tài)金屬電阻率測(cè)試儀的核<b class='flag-5'>心算法</b>與信號(hào)處理技術(shù)

    RIGOL示波器支持GHz級(jí)量子密鑰分發(fā)測(cè)試

    一、引言 1.1量子密鑰分發(fā)技術(shù)的重要性 在信息時(shí)代,數(shù)據(jù)安全至關(guān)重要。傳統(tǒng)加密技術(shù)雖廣泛應(yīng)用,但存在被量子計(jì)算機(jī)破解的風(fēng)險(xiǎn)。量子密鑰分發(fā)技術(shù)基于量子力學(xué)原理,能實(shí)現(xiàn)無(wú)條件安全的密鑰傳輸。它使通信
    的頭像 發(fā)表于 08-10 15:19 ?894次閱讀

    DFT算法與FFT算法的優(yōu)劣分析

    一概述 在諧波分析儀中,我們常常提到的兩個(gè)詞語(yǔ),就是DFT算法與FFT算法,那么一款功率分析儀/諧波分析儀采用DFT算法或者FFT算法,用戶往往關(guān)注的是能否達(dá)到所要分析諧波次數(shù)的目的,
    的頭像 發(fā)表于 08-04 09:30 ?734次閱讀

    三坐標(biāo)測(cè)量機(jī)路徑規(guī)劃與補(bǔ)償技術(shù):核心算法解析

    三坐標(biāo)測(cè)量的微米級(jí)精度背后,是精密的路徑規(guī)劃算法與實(shí)時(shí)補(bǔ)償技術(shù)在保駕護(hù)航。三坐標(biāo)測(cè)量機(jī)的智能避撞算法保障了測(cè)量的安全與高效;溫度補(bǔ)償技術(shù)消除了環(huán)境的無(wú)形干擾;點(diǎn)云智能處理則讓海量數(shù)據(jù)蛻變?yōu)榫珳?zhǔn)的工程
    的頭像 發(fā)表于 08-01 14:15 ?1154次閱讀
    三坐標(biāo)測(cè)量機(jī)路徑規(guī)劃與補(bǔ)償技術(shù):核<b class='flag-5'>心算法</b>解析

    shimetapi:開(kāi)源RGB+EVS視覺(jué)融合相機(jī)事件相機(jī)工具鏈與算法庫(kù)

    的接口控制和算法處理。 一、shimetapi_Hybrid_vision_algo (算法層 SDK) 定位: 這是 SDK 的核心算法處理層,位于架構(gòu)的中間層(黃色部分)。 核心功能: 專注于處理來(lái)自
    的頭像 發(fā)表于 06-26 13:52 ?365次閱讀

    RFID在藥品分發(fā)中的應(yīng)用

    。RFID在藥品分發(fā)中的優(yōu)勢(shì)高效率:RFID可以快速批量讀取藥品信息,大幅縮短分發(fā)時(shí)間,提高藥品管理效率。準(zhǔn)確性:RFID減少了人工操作的錯(cuò)誤率,提高了藥品分發(fā)的準(zhǔn)確
    的頭像 發(fā)表于 04-17 18:11 ?402次閱讀
    RFID在藥品<b class='flag-5'>分發(fā)</b>中的應(yīng)用

    永磁同步電機(jī)(PMSM)調(diào)速系統(tǒng)的智能控制算法研究

    為了解決PMSM 速度控制問(wèn)題,文中提出了一種模糊自整定 PI的控制方案,并用 MATLAB 對(duì)系統(tǒng) 進(jìn)行了建模仿真驗(yàn)證。仿真實(shí)驗(yàn)結(jié)果表明,該種新型控制算法與傳統(tǒng)的PI 控制相比較,具有很強(qiáng)的適應(yīng)性
    發(fā)表于 03-26 14:09

    Jtti.cc SCDN如何提高內(nèi)容分發(fā)效率?

    安全內(nèi)容分發(fā)網(wǎng)絡(luò)(SCDN)是一種集成了安全防護(hù)功能的內(nèi)容分發(fā)網(wǎng)絡(luò)。它不僅能夠加速內(nèi)容的分發(fā),還能有效抵御各種網(wǎng)絡(luò)攻擊,確保內(nèi)容的安全傳輸。以下是 SCDN 提高內(nèi)容分發(fā)效率的具體方法
    的頭像 發(fā)表于 03-25 16:00 ?345次閱讀

    C++學(xué)到什么程度可以找工作?

    、動(dòng)態(tài)規(guī)劃、貪心算法等)。 3. **操作系統(tǒng)原理**:理解進(jìn)程與線程、并發(fā)控制、同步機(jī)制(如互斥鎖、信號(hào)量等)、進(jìn)程間通信等概念。 4. **網(wǎng)絡(luò)編程**:熟悉基于Socket的網(wǎng)絡(luò)編程,了解TCP
    發(fā)表于 03-13 10:19

    破局者谷德科技:以創(chuàng)新算法重塑中國(guó)智能傳感器版圖

    一枚枚不足硬幣大小的紅外傳感器芯片正以0.1℃的精度刷新行業(yè)紀(jì)錄。這是深圳市谷德科技有限公司自主研發(fā)的第四代智能傳感器,其核心算法與集成技術(shù)已躋身國(guó)際前列,產(chǎn)品廣泛應(yīng)用于醫(yī)療、工業(yè)、汽車(chē)等領(lǐng)域,成為
    的頭像 發(fā)表于 03-01 10:31 ?668次閱讀

    PID控制算法的C語(yǔ)言實(shí)現(xiàn):PID算法原理

    在工業(yè)應(yīng)用中 PID 及其衍生算法是應(yīng)用最廣泛的算法之一,是當(dāng)之無(wú)愧的萬(wàn)能算法,如果能夠熟練掌握 PID 算法的設(shè)計(jì)與實(shí)現(xiàn)過(guò)程,對(duì)于一般的研發(fā)人員來(lái)講,應(yīng)該是足夠應(yīng)對(duì)一般研發(fā)問(wèn)題了,而
    發(fā)表于 02-26 15:24

    華為OpenLab助力打造行業(yè)AI解決方案

    昇騰在業(yè)界首先完成了DeepSeek核心算法適配,支持DeepSeek全系模型預(yù)訓(xùn)練及微調(diào),昇騰生態(tài)最優(yōu)、適配最好、模型架構(gòu)最親和,是DeepSeek算力“最優(yōu)解 "。
    的頭像 發(fā)表于 02-19 10:35 ?819次閱讀
    華為OpenLab助力打造行業(yè)AI解決方案

    【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+內(nèi)容簡(jiǎn)介

    內(nèi)容簡(jiǎn)介這是一本深入解讀基礎(chǔ)算法及其電路設(shè)計(jì),以打通算法研發(fā)到數(shù)字IC設(shè)計(jì)的實(shí)現(xiàn)屏障,以及指導(dǎo)芯片設(shè)計(jì)工程師從底層掌握復(fù)雜電路設(shè)計(jì)與優(yōu)化方法為目標(biāo)的專業(yè)技術(shù)書(shū)。任何芯片(如WiFi芯片、5G芯片
    發(fā)表于 11-21 17:14

    【「從算法到電路—數(shù)字芯片算法的電路實(shí)現(xiàn)」閱讀體驗(yàn)】+介紹基礎(chǔ)硬件算法模塊

    作為嵌入式開(kāi)發(fā)者往往比較關(guān)注硬件和軟件的協(xié)調(diào)。本書(shū)介紹了除法器,信號(hào)發(fā)生器,濾波器,分頻器等基本算法的電路實(shí)現(xiàn),雖然都是基礎(chǔ)內(nèi)容,但是也是最常用到的基本模塊。 隨著逆全球化趨勢(shì)的出現(xiàn),過(guò)去的研發(fā)
    發(fā)表于 11-21 17:05