国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

代碼隨想錄day31 貪心算法初探

這篇具有很好參考價(jià)值的文章主要介紹了代碼隨想錄day31 貪心算法初探。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

個(gè)人理解

????????就像卡哥視頻里說(shuō)的一樣,感覺(jué)貪心算法確實(shí)沒(méi)什么固定的套路,唯一的思路就是求局部最優(yōu)解然后推廣到全局最優(yōu)解,但是什么是局部最優(yōu)解,這個(gè)需要慢慢做題來(lái)摸索總結(jié),有點(diǎn)像調(diào)參,蠻玄學(xué)的,純考腦子

455.分發(fā)餅干

題目

假設(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。

思考

這題是非常典型的貪心,我的思路和卡哥思路也是完全一致,首先要把g、s兩個(gè)數(shù)組都sort,然后根據(jù)題意,是餅干的尺寸大于等于小孩的胃口,那么分別從g、s的最后一個(gè)數(shù)開始遍歷,如果s的最后一個(gè)數(shù)大于等于g最后一個(gè)數(shù),那么都向前移一位,res++;注意這里有一個(gè)討巧的做法,不用兩個(gè)for循環(huán),直接遍歷g,如果符合之前條件,那么s向前移一位,并且要先判斷s的size是否大于0

代碼

class Solution {

public:

? ? int findContentChildren(vector<int>& g, vector<int>& s) {

? ? ? ? if(!g.size() || !s.size()) return 0;

? ? ? ? sort(g.begin(), g.end());

? ? ? ? sort(s.begin(), s.end());

? ? ? ? int index = s.size() -1;

? ? ? ? int res = 0;

? ? ? ? for(int i = g.size() - 1; i >= 0; i--) {

? ? ? ? ? ? if(index >= 0 && s[index] >= g[i]) {

? ? ? ? ? ? ? ? res++;

? ? ? ? ? ? ? ? index--;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return res;

? ? }

};文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-801332.html

376. 擺動(dòng)序列

題目

如果連續(xù)數(shù)字之間的差嚴(yán)格地在正數(shù)和負(fù)數(shù)之間交替,則數(shù)字序列稱為擺動(dòng)序列。第一個(gè)差(如果存在的話)可能是正數(shù)或負(fù)數(shù)。少于兩個(gè)元素的序列也是擺動(dòng)序列。

例如,?[1,7,4,9,2,5] 是一個(gè)擺動(dòng)序列,因?yàn)椴钪?(6,-3,5,-7,3)? 是正負(fù)交替出現(xiàn)的。相反, [1,4,7,2,5]? 和 ?[1,7,4,5,5] 不是擺動(dòng)序列,第一個(gè)序列是因?yàn)樗那皟蓚€(gè)差值都是正數(shù),第二個(gè)序列是因?yàn)樗淖詈笠粋€(gè)差值為零。

給定一個(gè)整數(shù)序列,返回作為擺動(dòng)序列的最長(zhǎng)子序列的長(zhǎng)度。 通過(guò)從原始序列中刪除一些(也可以不刪除)元素來(lái)獲得子序列,剩下的元素保持其原始順序。

示例 1:

  • 輸入: [1,7,4,9,2,5]
  • 輸出: 6
  • 解釋: 整個(gè)序列均為擺動(dòng)序列

思考

嘿嘿,這題本來(lái)想吧數(shù)組的差值求出來(lái)得出一個(gè)數(shù)組,然后判斷這個(gè)數(shù)組是不是正負(fù)正負(fù),但轉(zhuǎn)念一想好像這樣的話也不用再得出一個(gè)數(shù)組,直接在原數(shù)組里判斷即可,即用類似雙指針的思路,設(shè)置prediif和curdiff,初始res = 1(因?yàn)椴还茉趺礃佣加虚L(zhǎng)度為1的數(shù)組滿足條件),然后遍歷數(shù)組,curdiff = nums[i+1] - nums[i],如果滿足prediff和curdiff是正負(fù)交替出現(xiàn),那么res++,prediff = curdiff,需要注意的是,這里的取得數(shù)組里的元素可以不連續(xù)。

代碼

class Solution {

public:

? ? int wiggleMaxLength(vector<int>& nums) {

? ? ? ? if(nums.size() == 1 || nums.size() == 0) return nums.size();

? ? ? ? int res = 1;

? ? ? ? int prediff = 0;

? ? ? ? int curdiff = 0;

? ? ? ? for(int i = 0; i < nums.size() - 1; i++) {

? ? ? ? ? ? curdiff = nums[i+1] - nums[i];

? ? ? ? ? ? if((prediff <= 0 && curdiff > 0) || (prediff >= 0 && curdiff < 0)){

? ? ? ? ? ? ? ? res++;

? ? ? ? ? ? ? ? prediff = curdiff;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return res;

? ? }

};

53. 最大子序和

題目

給定一個(gè)整數(shù)數(shù)組 nums?,找到一個(gè)具有最大和的連續(xù)子數(shù)組(子數(shù)組最少包含一個(gè)元素),返回其最大和。

示例:

  • 輸入: [-2,1,-3,4,-1,2,1,-5,4]
  • 輸出: 6
  • 解釋:? 連續(xù)子數(shù)組 ?[4,-1,2,1] 的和最大,為 ?6。

思考

說(shuō)實(shí)話,看到這題有點(diǎn)懵,感覺(jué)只能暴力解,也明白了為啥說(shuō)貪心算法你想的出來(lái)就是想的出來(lái),想不出來(lái)死也想不出開,看完卡哥視頻,發(fā)現(xiàn)答題思路就是和我之前想的差不多,遍歷數(shù)組,和+=nums[i],如果和小于0,那么和就等于0從新開始,如果大于0,那么判斷它和res哪個(gè)大,如果大于res,那么res等于和,相當(dāng)于取最大值。

代碼

class Solution {

public:

? ? int maxSubArray(vector<int>& nums) {

? ? ? ? int res = INT_MIN;

? ? ? ? int tmp = 0;

? ? ? ? for(auto n : nums) {

? ? ? ? ? ? tmp += n;

? ? ? ? ? ? if(tmp > res) res = tmp;

? ? ? ? ? ? if(tmp < 0) tmp = 0;

? ? ? ? }

? ? ? ? return res;

? ? }

};

到了這里,關(guān)于代碼隨想錄day31 貪心算法初探的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 代碼隨想錄day24 開啟回溯算法

    感覺(jué)回溯算法其實(shí)和遞歸很像,也是用遞歸的做法,也有三部曲,但又不太一樣的地方是遞歸中類似二叉樹,只有縱向遍歷(一層層往下遍歷,沒(méi)有橫向遍歷),而回溯算法中多的for循環(huán)就是橫向遍歷,說(shuō)實(shí)話這一點(diǎn)我沒(méi)有理解的太深,只是知道它類似于兩個(gè)for循環(huán)中的第一

    2024年01月16日
    瀏覽(108)
  • 代碼隨想錄算法訓(xùn)練day4 | 鏈表

    目錄 24. 兩兩交換鏈表節(jié)點(diǎn) 19. 刪除鏈表倒數(shù)第n個(gè)節(jié)點(diǎn) 方法一:普通寫法 方法二:雙指針?lè)?面試題:找鏈表相交節(jié)點(diǎn) 142. 判斷環(huán)形鏈表 虛擬頭節(jié)點(diǎn)的本質(zhì)意義在于減少了特殊情況的處理。不用判斷該節(jié)點(diǎn)是否在鏈表的第一位。 定義快慢兩個(gè)指針。 fast先走n步,再讓fast和s

    2024年02月04日
    瀏覽(90)
  • 代碼隨想錄算法訓(xùn)練DAY25|回溯2

    代碼隨想錄算法訓(xùn)練DAY25|回溯2

    力扣題目鏈接 找出所有相加之和為 n 的 k 個(gè)數(shù)的組合。組合中只允許含有 1 - 9 的正整數(shù),并且每種組合中不存在重復(fù)的數(shù)字。 說(shuō)明: 所有數(shù)字都是正整數(shù)。 解集不能包含重復(fù)的組合。 示例 1: 輸入: k = 3, n = 7 輸出: [[1,2,4]] 示例 2: 輸入: k = 3, n = 9 輸出: [[1,2,6], [1,3,5], [2,3,4]

    2024年01月22日
    瀏覽(91)
  • 代碼隨想錄算法訓(xùn)練DAY27|回溯3

    代碼隨想錄算法訓(xùn)練DAY27|回溯3

    力扣題目鏈接 給定一個(gè)無(wú)重復(fù)元素的數(shù)組 candidates 和一個(gè)目標(biāo)數(shù) target ,找出 candidates 中所有可以使數(shù)字和為 target 的組合。 candidates 中的數(shù)字可以無(wú)限制重復(fù)被選取。 說(shuō)明: 所有數(shù)字(包括 target)都是正整數(shù)。 解集不能包含重復(fù)的組合。 示例 1: 輸入:candidates = [2,3,6,

    2024年01月23日
    瀏覽(92)
  • 代碼隨想錄算法練習(xí)Day1:二分查找

    代碼隨想錄算法練習(xí)Day1:二分查找

    題目鏈接:704. 二分查找 卡哥視頻講解:手把手帶你撕出正確的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找 二分法概述: 二分法(Binary Search)是一種在有序數(shù)組或列表中查找目標(biāo)元素的算法。 二分法使用前提 : 有序數(shù)組或列表 :二分法要求在查找的數(shù)據(jù)結(jié)

    2024年04月23日
    瀏覽(95)
  • 代碼隨想錄Day20 回溯算法 LeetCode77 組合問(wèn)題

    代碼隨想錄Day20 回溯算法 LeetCode77 組合問(wèn)題

    以下內(nèi)容更詳細(xì)解釋來(lái)自于:代碼隨想錄 (programmercarl.com) 回溯法也叫回溯搜索法,是搜索法的一種,我們之前在二叉樹中也經(jīng)常使用到回溯來(lái)解決問(wèn)題,其實(shí) 有遞歸就有回溯 ,有的時(shí)候回溯隱藏在遞歸之下,我們不容易發(fā)覺(jué),今天我們來(lái)詳細(xì)介紹一下什么是回溯,它能解決哪些問(wèn)題.

    2024年02月08日
    瀏覽(93)
  • 【一天三道算法題】代碼隨想錄——Day15(困難題只有一道)

    一. 滑動(dòng)窗口最大值 題目鏈接:力扣 思路: ????????這道題我認(rèn)為最難的是編程語(yǔ)言本身并沒(méi)有一個(gè)可以讓你完全直接開始使用的一個(gè)數(shù)據(jù)結(jié)構(gòu),也就是說(shuō)要自己造輪子。并且為了盡可能的減少維護(hù)元素的個(gè)數(shù)我們要學(xué)會(huì)去在能實(shí)現(xiàn)功能的前提下,維護(hù)盡可能少的數(shù)組元

    2024年02月15日
    瀏覽(93)
  • 代碼隨想錄Day58

    昨天因?yàn)橹驹富顒?dòng)和筆試耽誤了一整天,今天繼續(xù)學(xué)習(xí)動(dòng)規(guī)解決子序列問(wèn)題。 給定字符串 s 和 t ,判斷 s 是否為 t 的子序列。 字符串的一個(gè)子序列是原始字符串刪除一些(也可以不刪除)字符而不改變剩余字符相對(duì)位置形成的新字符串。(例如,\\\"ace\\\"是\\\"abcde\\\"的一個(gè)子序列,

    2023年04月27日
    瀏覽(97)
  • 代碼隨想錄Day50

    昨天因?yàn)闇?zhǔn)備面試所以咕咕了一天。今天繼續(xù)學(xué)習(xí)動(dòng)規(guī)算法,盡管背包問(wèn)題已經(jīng)結(jié)束但其中的各類思想仍需要進(jìn)一步理解。 你是一個(gè)專業(yè)的小偷,計(jì)劃偷竊沿街的房屋。每間房?jī)?nèi)都藏有一定的現(xiàn)金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統(tǒng),如果兩

    2023年04月14日
    瀏覽(93)
  • 代碼隨想錄day59

    647. 回文子串 給你一個(gè)字符串? s ?,請(qǐng)你統(tǒng)計(jì)并返回這個(gè)字符串中? 回文子串 ?的數(shù)目。 回文字符串 ?是正著讀和倒過(guò)來(lái)讀一樣的字符串。 子字符串 ?是字符串中的由連續(xù)字符組成的一個(gè)序列。 具有不同開始位置或結(jié)束位置的子串,即使是由相同的字符組成,也會(huì)被視作不

    2024年02月07日
    瀏覽(87)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包