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

【代碼隨想錄】刷題Day31

這篇具有很好參考價值的文章主要介紹了【代碼隨想錄】刷題Day31。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.分發(fā)餅干

455. 分發(fā)餅干

貪心的思路就是:小的餅干盡量去匹配胃口小的孩子,這樣才能實現(xiàn)盡可能多孩子吃到。

那么代碼就很好寫了:

1.排序g和s,這樣方便查找小的數(shù)

2.餅干的位置不停遍歷,對應(yīng)我們需要一個ret代表當(dāng)前孩子位置

3.如果當(dāng)前位置為孩子的數(shù)量,說明ret記錄下所有的孩子,直接返回即可。如果當(dāng)前孩子的胃口剛好小于等于餅干遍歷的位置,說明此時這個孩子是滿足要求的,那么ret++,此外,說明條件不滿足,我們需要找下一個餅干去判斷是否滿足大于或者等于小孩胃口的條件

class Solution {
public:
    int findContentChildren(vector<int>& g, vector<int>& s) {
        sort(g.begin(),g.end());
        sort(s.begin(),s.end());
        int ret = 0;
        for(int i=0;i<s.size();i++)
        {
            if(ret==g.size())
                break;
            if(g[ret]<=s[i])
                ret++;
        }
        return ret;
    }
};

2.擺動序列

376. 擺動序列

貪心的思路:如果前一個的趨勢和后一個的趨勢一樣,那么我們就刨除掉當(dāng)前的點。這樣就能有最長的序列了

1.先介紹變量用來記錄什么:

int ret = 1:代表返回的擺動點數(shù),由于默認一個點就是一個數(shù),那么我們初始化就變?yōu)?

int prev = 0 :代表前一次波動的趨勢,不過要注意的是,我們開始設(shè)置為平波動是因為第一個位置不需要比較,默認計數(shù)一次;后面prev不會用來記錄平波動,這是我用來判斷連續(xù)平波和上坡交替出現(xiàn)時的特殊點,之所以這樣設(shè)計,是讓prev代表從ret沒有變化后整體的趨勢,如果cur=0,此時不能代表前面的就一定是有起伏的,那么也就不能讓ret++。【代碼隨想錄】刷題Day31

int cur = 0:當(dāng)前位置與前一個位置的趨勢情況。

prev和cur的比較就是用來判斷ret是否加一的條件?。?/p>

2.由于第一個數(shù)(下標(biāo)為0),已經(jīng)被我們記錄下來了,那么循環(huán)的開始就從下標(biāo)1開始。先更新cur為當(dāng)前的數(shù)減去前一個數(shù)。隨后判斷此時的prev和cur條件

*由于開始我們設(shè)置的prev=0,所以此時的條件一定有一個是(prev==0&&cur!=0),因為我們有一個條件是不能忽略的:最開始就有一個上升趨勢,那么當(dāng)前的位置是需要加一的操作才能記錄下,所以ret++

*(prev>0&&cur<0)||(prev<0&&cur>0),那么就是一個起伏,說明當(dāng)前的趨勢和上一次趨勢是相反的,那么是可以將當(dāng)前的ret++

*上面兩個判斷都需要更新節(jié)點前一個的趨勢prev=cur;那么值得注意的是,當(dāng)cur=0時,我們不更新prev,就是條件1介紹:prev是必須要用來表示ret不變時,整體的趨勢,這樣才能判斷下一次的趨勢和整體趨勢區(qū)別,才能對ret進行操作

class Solution {
public:
    int wiggleMaxLength(vector<int>& nums) {
        int ret = 1;
        int prev = 0;
        int cur = 0;
        if(nums.size()==1)
            return ret;
        for(int i=1;i<nums.size();i++)
        {
            cur = nums[i]-nums[i-1];
            if((prev>0&&cur<0)||(prev<0&&cur>0)||(prev==0&&cur!=0))
            {
                ret++;
                prev=cur;
            }
        }
        return ret;
    }
};

3.最大子數(shù)組和

53. 最大子數(shù)組和

貪心的思路:如果累加的總數(shù)小于0,那么后面的正數(shù)會影響,也就是說下一個位置的整數(shù)并沒有起到使得總和變大的作用,那不如從下一個位置重新開始。文章來源地址http://www.zghlxwxcb.cn/news/detail-455680.html

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int ret = nums[0];
        int tmp = 0;
        for(int i=0;i<nums.size();i++)
        {
            tmp+=nums[i];
            if(ret<tmp)
                ret=tmp;
            if(tmp<0)
                tmp=0;
        }
        return ret;
    }
};

到了這里,關(guān)于【代碼隨想錄】刷題Day31的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【代碼隨想錄】刷題Day47

    198. 打家劫舍 1.dp數(shù)組含義:dp[i]為i位置下的最大能得到的價值 2.根據(jù)條件:相鄰不能偷。i位置的最大價值取決于i-1位置是否已經(jīng)偷過了。如果偷過了,i位置的最大價值就是dp[i-1],即i位置的物品不偷;如果沒有偷過,i位置的最大價值就是dp[i-2]+nuvms[i],i位置的數(shù)和對應(yīng)的d

    2024年02月07日
    瀏覽(107)
  • 【代碼隨想錄】刷題Day35

    860. 檸檬水找零 1.如果第一個顧客沒有五元,那么直接返回false,因為店主開始沒有零錢 2.定義兩個int,一個記錄5元,一個記錄10元,隨后遍歷整個數(shù)組,會出現(xiàn)三種情況: 如果顧客給5元,直接num5加一 如果顧客給10元,判斷num5是否大于0,大于則num5--,num10++;反之返回false

    2024年02月06日
    瀏覽(22)
  • 代碼隨想錄刷題 Day14

    二叉法的前中后序的遍歷, 前中后所說的是根節(jié)點輸出的順序;? 有兩種遍歷方式, 1. 遞歸法 (自己調(diào)用自己,本質(zhì)是用棧) 代碼比較簡單,但是需要創(chuàng)建一個額外的函數(shù)來進行自己調(diào)用自己的過程;用遞歸法的話三種遍歷方式只需要改變代碼的位置就可以。 Leetcode 對應(yīng)

    2024年02月08日
    瀏覽(26)
  • 【代碼隨想錄】刷題Day6

    242. 有效的字母異位詞 直接使用庫函數(shù)的multiset來判斷 其實沒什么好說的,因為字符串有重復(fù)的可以出現(xiàn)所以用的multiset 缺點:確實浪費空間,紅黑樹的插入刪除,浪費時間 2.數(shù)組實現(xiàn) 26個小寫字母,而且是連續(xù)的,那么我們直接用數(shù)組來存儲也可以的 1.那么映射的方式也很

    2024年02月02日
    瀏覽(33)
  • 【代碼隨想錄】刷題Day4

    【代碼隨想錄】刷題Day4

    24. 兩兩交換鏈表中的節(jié)點 前后指針實現(xiàn) 1.沒有元素或者只有一個元素?zé)o意義 2.給出一個前驅(qū)prev,以及用來交換的兩個節(jié)點cur和next 3.我當(dāng)時是這么想的,如果兩個指針一起動,那么就要用cur和next同時判斷結(jié)束,也許這個條件會比較苛刻(我就煩這種邊界條件),所以我覺得動一

    2023年04月22日
    瀏覽(37)
  • 代碼隨想錄刷題 Day15

    代碼隨想錄刷題 Day15

    1. 二叉樹遍歷的層序方法, 記住模板后可以做下面十道題,現(xiàn)在暫時只做了102; 102.二叉樹的層序遍歷 107.二叉樹的層次遍歷II 199.二叉樹的右視圖 637.二叉樹的層平均值 429.N叉樹的層序遍歷 515.在每個樹行中找最大值 116.填充每個節(jié)點的下一個右側(cè)節(jié)點指針 117.填充每個節(jié)點的

    2024年02月06日
    瀏覽(33)
  • 代碼隨想錄刷題day 2

    977.有序數(shù)組的平方 雙index法: vectorint result(nums.size(),0)創(chuàng)建一個新的數(shù)組用來存結(jié)果。 i用來指向起始位置;j用來指向結(jié)尾的位置,取了起始位置的時候就i++,采用了結(jié)尾的位置的時候就j--,直到i與j相遇; 209.長度最小的子數(shù)組 滑動窗口法, 和雙index法差不多的意思: 創(chuàng)建一

    2024年02月05日
    瀏覽(26)
  • 代碼隨想錄刷題day 3

    203.?Remove Linked List Elements 不創(chuàng)建dummy 節(jié)點的方法:? 當(dāng)刪除節(jié)點為頭節(jié)點時候 ListNode *temp=head; 創(chuàng)建一個temp存儲的頭結(jié)點的位置等下delete釋放這部分內(nèi)存; head = head-next; //移動頭指針的位置到頭結(jié)點的下一個節(jié)點;要注意區(qū)分這句與? current-next = current-next-next的區(qū)別; 當(dāng)刪除

    2024年02月04日
    瀏覽(19)
  • 【代碼隨想錄】刷題筆記Day49

    跑了個步吃了個飯洗了個澡以及和母上打了個電話,繼續(xù)來刷題咯o(* ̄▽ ̄*)ブ 之前寫過的,代碼直接看【代碼隨想錄】刷題筆記Day35-CSDN博客 一維和貪心的思路其實大差不差,本質(zhì)還是上升就賣,不上升保留之前的利潤 和上一題基本一樣,唯一不同是可以買賣多次, dp[i]

    2024年01月21日
    瀏覽(51)
  • 代碼隨想錄刷題day6

    242.有效的字母異位詞 用數(shù)組實現(xiàn)哈希; 注意初始化; int storage[26] = {0}; //定義數(shù)組的方法: ?數(shù)據(jù)類型 ?數(shù)組名[數(shù)組長度]; 這時候index從 0 - 25;注意要初始化這個數(shù)組,不初始化會報錯 349. 兩個數(shù)組的交集 用unoderset來實現(xiàn)哈希,注意unorderset容器內(nèi)部直接就做了去重操作 要

    2024年02月03日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包