哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

455.分發(fā)餅干

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

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

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

示例1:

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

示例2:

  • 輸入: g = [1,2], s = [1,2,3]
  • 輸出: 2
  • 解釋:你有兩個孩子和三塊小餅干,2個孩子的胃口值分別是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)就是大餅干喂給胃口大的,充分利用餅干尺寸喂飽一個,全局最優(yōu)就是喂飽盡可能多的小孩。

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

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

如圖:

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

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

C++代碼整體如下:

//時間復(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;
}
};

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

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

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

代碼如下:

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é)

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

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

其他語言版本

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ù)尋找選一個餅干是否符合
child++
}
}

returnchild
}

審核編輯 :李倩


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

    關(guān)注

    23

    文章

    4805

    瀏覽量

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

    關(guān)注

    1

    文章

    420

    瀏覽量

    27468

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    AI 算法核心知識清單(深度實戰(zhàn)版2)

    三、機(jī)器學(xué)習(xí)核心算法(入門到實戰(zhàn))?1.監(jiān)督學(xué)習(xí)算法(已知標(biāo)簽的模型訓(xùn)練)?線性模型?線性回歸(回歸任務(wù)):?核心原理:假設(shè)y=w?+w?x?+w?x?+...+w?x?+ε(ε為誤差項),通過
    的頭像 發(fā)表于 04-24 11:58 ?124次閱讀
    AI <b class='flag-5'>算法</b>核心知識清單(深度實戰(zhàn)版2)

    端子電流循環(huán)壽命試驗機(jī)核心算法解析:溫升預(yù)測模型與壽命衰減曲線擬合

    端子電流循環(huán)壽命試驗機(jī)的核心算法,是實現(xiàn)端子壽命精準(zhǔn)預(yù)測、測試過程智能管控的關(guān)鍵,其中溫升預(yù)測模型與壽命衰減曲線擬合兩大核心算法,分別解決了測試過程中的溫度動態(tài)調(diào)控與壽命趨勢研判問題,共同構(gòu)建起科學(xué)
    的頭像 發(fā)表于 04-02 09:21 ?166次閱讀
    端子電流循環(huán)壽命試驗機(jī)核<b class='flag-5'>心算法</b>解析:溫升預(yù)測模型與壽命衰減曲線擬合

    【硬核拆解】別被“吹膜”標(biāo)簽騙了!深扒海納張力變頻器的全場景控制算法

    自適應(yīng)慣量辨識,深度解析海納如何憑借一套核心算法,通吃鋰電、印刷、紡織等全場景卷繞控制。 一、引言:是“專用機(jī)”還是“通用平臺”? 很多工程師在選型時,看到海納在吹膜機(jī)上的高占有率,便下意識認(rèn)為它只適合塑料薄膜行業(yè)。
    的頭像 發(fā)表于 03-25 10:22 ?136次閱讀

    深入淺出GMSSL:掌握SM2、SM3、SM4國密算法的高效實踐

    將帶你從零開始,深入理解這三大核心算法在GMSSL中的高效使用方式,幫助你在實際項目中快速落地國密安全方案。 本文將以通信定位二合一系列Air780EGH核心板為例,帶你快速上手GMSSL國密算法SM2、SM3、SM4相關(guān)示例。 一、SM2:橢圓曲線公鑰密碼
    的頭像 發(fā)表于 12-12 18:20 ?889次閱讀
    深入淺出GMSSL:掌握SM2、SM3、SM4國密<b class='flag-5'>算法</b>的高效實踐

    藍(lán)牙信標(biāo)、UWB等主流室內(nèi)定位無線技術(shù)的參數(shù)對比、核心算法和選型指南詳解(二)

    本文系統(tǒng)解析室內(nèi)定位無線技術(shù),涵蓋藍(lán)牙、Wi-Fi、UWB、RFID、超聲波、可見光等主流技術(shù)的原理、參數(shù)對比與核心算法(RSSI、TDOA、AoA),并提供按精度、成本、場景匹配的選型指南,助力民用、工業(yè)、資產(chǎn)盤點(diǎn)及特殊環(huán)境下的最優(yōu)技術(shù)選擇。
    的頭像 發(fā)表于 12-12 16:28 ?1933次閱讀
    藍(lán)牙信標(biāo)、UWB等主流室內(nèi)定位無線技術(shù)的參數(shù)對比、核<b class='flag-5'>心算法</b>和選型指南詳解(二)

    芯片專家精準(zhǔn)賦能:超聲切割技術(shù)迎來核心算法突破新契機(jī)

    算法與硬件平臺的協(xié)同挑戰(zhàn)在技術(shù)對接過程中,固特超聲技術(shù)總監(jiān)坦言面臨的三大技術(shù)難題:"雖然我們已構(gòu)建基于DSP或FPGA的全數(shù)字控制平臺,實現(xiàn)了超聲電源系統(tǒng)的數(shù)字
    的頭像 發(fā)表于 11-11 18:18 ?942次閱讀
    芯片專家精準(zhǔn)賦能:超聲切割技術(shù)迎來核<b class='flag-5'>心算法</b>突破新契機(jī)

    SM4算法實現(xiàn)分享(一)算法原理

    SM4分組加密算法采用的是非線性迭代結(jié)構(gòu),以字為單位進(jìn)行加密、解密運(yùn)算,每次迭代稱為一輪變換,每輪變換包括S盒變換、非線性變換、線性變換、合成變換。加解密算法與密鑰擴(kuò)展都是采用32輪非線性迭代結(jié)構(gòu)
    發(fā)表于 10-30 08:10

    Camellia算法的實現(xiàn)二(基于開源蜂鳥E203協(xié)處理器)

    115200波特率向FPGA發(fā)送數(shù)據(jù)或密鑰數(shù)據(jù),UART_RX模塊接收到數(shù)據(jù)后,進(jìn)行串并轉(zhuǎn)換,并將轉(zhuǎn)換后的數(shù)據(jù)傳給Camellia的核心算法模塊進(jìn)行處理。經(jīng)過處理后的數(shù)據(jù),并進(jìn)行并串轉(zhuǎn)換后,通過UART_TX
    發(fā)表于 10-30 06:35

    國密系列算法簡介及SM4算法原理介紹

    一、 國密系列算法簡介 國家商用密碼算法(簡稱國密/商密算法),是由我國國家密碼管理局制定并公布的密碼算法標(biāo)準(zhǔn)。其分類1所示: 圖1 國家商用密碼
    發(fā)表于 10-24 08:25

    加密算法的應(yīng)用

    一些缺點(diǎn)。由于加密和解密使用同一個密鑰,因此密鑰的保密性必須得到保證。如果密鑰泄露,那么攻擊者就可以輕易地解密密文數(shù)據(jù)。此外,在對稱加密算法中,密鑰的分發(fā)也是一個難題,如何將密鑰安全地傳遞給對方也需要
    發(fā)表于 10-24 08:03

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

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

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

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

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

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

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

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

    shimetapi:開源RGB+EVS視覺融合相機(jī)事件相機(jī)工具鏈與算法

    的接口控制和算法處理。 一、shimetapi_Hybrid_vision_algo (算法層 SDK) 定位: 這是 SDK 的核心算法處理層,位于架構(gòu)的中間層(黃色部分)。 核心功能: 專注于處理來自
    的頭像 發(fā)表于 06-26 13:52 ?846次閱讀
    托里县| 桑植县| 抚宁县| 集贤县| 清河县| 比如县| 襄城县| 舒兰市| 嘉峪关市| 古蔺县| 都昌县| 和林格尔县| 蒙阴县| 清徐县| 西充县| 余姚市| 工布江达县| 西林县| 抚顺市| 安龙县| 文水县| 辰溪县| 循化| 神农架林区| 兴城市| 会同县| 贡山| 富阳市| 绵竹市| 阿瓦提县| 阜宁县| 云安县| 仁布县| 抚顺县| 东乡县| 来宾市| 金昌市| 鸡泽县| 鹤岗市| 竹溪县| 东源县|