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

力扣精選算法100題——水果成籃(滑動(dòng)窗口專題)

這篇具有很好參考價(jià)值的文章主要介紹了力扣精選算法100題——水果成籃(滑動(dòng)窗口專題)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

本題鏈接??水果成籃

力扣精選算法100題——水果成籃(滑動(dòng)窗口專題),算法,leetcode,算法,職場(chǎng)和發(fā)展


第一步:了解題意

我就按照實(shí)例1來(lái)進(jìn)行對(duì)這題的理解。

力扣精選算法100題——水果成籃(滑動(dòng)窗口專題),算法,leetcode,算法,職場(chǎng)和發(fā)展

1代表種類類型,這個(gè)數(shù)組里面有2個(gè)種類類型 ps:種類1和種類2 ,只不過(guò)種類1是有2個(gè)水果,種類2有一個(gè)水果,共計(jì)3個(gè)水果。

本題需要解答:收集水果的最大數(shù)目.

但是前提條件:

  • 我們只有2個(gè)籃子,每個(gè)籃子里只能裝1種類型,但是籃子里的數(shù)量是不限制的。
  • 每采摘一次,將會(huì)可以向右移動(dòng)到下一棵樹(shù),并繼續(xù)采摘,不能跳過(guò)一棵樹(shù)
  • 2個(gè)籃子表示著我們只能容納2個(gè)類型的,出現(xiàn)第3類型的蘋(píng)果,我們就直接結(jié)束采摘

就按實(shí)例3來(lái)表示:fruits[1,2,3,2,2]?

力扣精選算法100題——水果成籃(滑動(dòng)窗口專題),算法,leetcode,算法,職場(chǎng)和發(fā)展

1,2,遇到3的時(shí)候,這就是我們遇到的第三種類型水果了,那么我們就需要停止,這時(shí)候就可以記錄一次蘋(píng)果的數(shù)量2,其實(shí)后面就不用看了。

然后就從2開(kāi)始,因?yàn)?,3是2種類型就可以繼續(xù)采摘,大于2才是不行的,所以2,3,2,2,一直是可以的,因?yàn)槎际欠N類2,相當(dāng)于同一種類型,所以蘋(píng)果數(shù)量是4,這時(shí)候最大的采摘數(shù)量是4.?


第二步:算法思路

以后我們遇到一些題目記錄一些重復(fù)值個(gè)數(shù),如果超過(guò)幾個(gè)數(shù)或者不能重復(fù),就需要將這個(gè)值存入到哈希表中(其實(shí)就是值得映射到數(shù)組中去)

大部分題目都是從 暴力枚舉 然后一步一步的優(yōu)化得到的,所以

第一種解法:暴力枚舉+哈希

首先定義2個(gè)指針,都是在0位置出發(fā)。

力扣精選算法100題——水果成籃(滑動(dòng)窗口專題),算法,leetcode,算法,職場(chǎng)和發(fā)展

力扣精選算法100題——水果成籃(滑動(dòng)窗口專題),算法,leetcode,算法,職場(chǎng)和發(fā)展

力扣精選算法100題——水果成籃(滑動(dòng)窗口專題),算法,leetcode,算法,職場(chǎng)和發(fā)展

力扣精選算法100題——水果成籃(滑動(dòng)窗口專題),算法,leetcode,算法,職場(chǎng)和發(fā)展

暴力枚舉中的第二步,每一次都得清空hash中的值,我們就會(huì)覺(jué)得很繁瑣,那么如何優(yōu)化呢?


第二種解法:滑動(dòng)窗口+哈希

滑動(dòng)窗口的模板:

1.left=0,right=0;

2.進(jìn)窗口

3.判斷

4.出窗口

更新結(jié)果(這是是在上面的4個(gè)步驟中根據(jù)題目的不同來(lái)穿插的)

2.進(jìn)窗口

實(shí)際上,就是讓right的值存入到hash表中(hash表其實(shí)就是一個(gè)一維數(shù)組)

3.判斷

我們上面再了解題意的時(shí)候已經(jīng)寫(xiě)上了(種類超過(guò)2種的就得停止采摘)

所以判斷的條件就是是否超過(guò)2種種類。

4.出窗口

出窗口建立在判斷的時(shí)候的 ,判斷了超過(guò)2種類型,我們就得出窗口,left對(duì)應(yīng)的值就得--,如果減到0了我們就得給種類-1,知道減到種類=2,left++,我們就可以繼續(xù)進(jìn)行滑動(dòng)窗口的步驟。

5.更新結(jié)果

結(jié)果是只要判斷結(jié)果kinds<2就可以更新結(jié)果。

第三步:代碼實(shí)現(xiàn)

class Solution {
public:
    int totalFruit(vector<int>& fruits) {
        int hash[100001]={0};//統(tǒng)計(jì)窗口中出現(xiàn)了多少種水果
        int ret=0;
        for(int left=0,right=0,kinds=0;right<fruits.size();right++)
        {
            if(hash[fruits[right]]==0) kinds++;
            hash[fruits[right]]++;//進(jìn)窗口
            while(kinds>2)//判斷
            {
                //出窗口
                hash[fruits[left]]--;//left對(duì)應(yīng)的值一直--
                if(hash[fruits[left]]==0) kinds--;//直到-到0就給種類--
                left++;
            }
            ret=max(ret,right-left+1);
        }
        return ret;
    }
};

我永遠(yuǎn)走在提升自己的路上~?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-795905.html

到了這里,關(guān)于力扣精選算法100題——水果成籃(滑動(dòng)窗口專題)的文章就介紹完了。如果您還想了解更多內(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)文章

  • 力扣精選算法100道——提莫攻擊(模擬專題)

    力扣精選算法100道——提莫攻擊(模擬專題)

    目錄 ??題目解析 ??算法原理 ??實(shí)現(xiàn)代碼 ? 我們可以看到 1 是 如果倆次攻擊的時(shí)間之差是1(前提是倆者相減小于duration) 我們看到倆次攻擊時(shí)間之差是duration(前提是倆者相減大于等于duration)。3和7的差距是大于duration,所以可以中毒dauration秒。 結(jié)論: 中毒時(shí)間記為ret,相鄰

    2024年02月21日
    瀏覽(16)
  • 力扣精選算法100題——四數(shù)之和(雙指針專題)

    力扣精選算法100題——四數(shù)之和(雙指針專題)

    上一篇講到(倆數(shù)之和and三數(shù)之和)這一篇我要來(lái)解析四數(shù)之和,四數(shù)之和建立在三數(shù)之和的基礎(chǔ)上,我們需要熟練掌握三數(shù)之和的算法原理,如果大家三數(shù)之和還沒(méi)弄清楚,請(qǐng)點(diǎn)擊三數(shù)之和and二數(shù)之和鏈接即可看到。 ?三數(shù)之和和四數(shù)之和的題意其實(shí)都一樣。 找到出四個(gè)數(shù)

    2024年01月19日
    瀏覽(21)
  • 力扣熱門(mén)100題之滑動(dòng)窗口最大值【困難】

    力扣熱門(mén)100題之滑動(dòng)窗口最大值【困難】

    給你一個(gè)整數(shù)數(shù)組 nums,有一個(gè)大小為 k 的滑動(dòng)窗口從數(shù)組的最左側(cè)移動(dòng)到數(shù)組的最右側(cè)。你只可以看到在滑動(dòng)窗口內(nèi)的 k 個(gè)數(shù)字?;瑒?dòng)窗口每次只向右移動(dòng)一位。 返回 滑動(dòng)窗口中的最大值 。 示例 1: 輸入:nums = [1,3,-1,-3,5,3,6,7], k = 3 輸出:[3,3,5,5,6,7] 解釋: 滑動(dòng)窗口的位置

    2024年02月16日
    瀏覽(22)
  • 【算法優(yōu)選】 滑動(dòng)窗口專題——壹

    基本概念 滑動(dòng)窗口是一種 基于雙指針 的一種思想,兩個(gè)指針指向的元素之間形成一個(gè)窗口。 分類:窗口有兩類,一種是 固定大小類 的窗口,一類是 大小動(dòng)態(tài)變化 的窗口。 給定一個(gè)含有 n 個(gè)正整數(shù)的數(shù)組和一個(gè)正整數(shù) target 。 找出該數(shù)組中滿足其總和大于等于 target 的長(zhǎng)

    2024年02月08日
    瀏覽(21)
  • 算法專題二:滑動(dòng)窗口

    算法專題二:滑動(dòng)窗口

    長(zhǎng)度最小的子數(shù)組 思路一: 思路二: 無(wú)重復(fù)字符的最長(zhǎng)子串 思路一: 最大連續(xù)1的個(gè)數(shù) 開(kāi)頭位0 并且k為0算是一個(gè)特殊的情況這樣的情況有一些考慮就走不出去前面的0而忽略到后面數(shù)組自帶1,走不到這些1數(shù)據(jù)導(dǎo)致記錄連續(xù)1的個(gè)數(shù)出問(wèn)題! 將x減小到0的最小操作數(shù) 水果成籃

    2024年02月02日
    瀏覽(26)
  • 【算法優(yōu)選】 滑動(dòng)窗口專題——貳

    基本概念 滑動(dòng)窗口是一種 基于雙指針 的一種思想,兩個(gè)指針指向的元素之間形成一個(gè)窗口。 分類:窗口有兩類,一種是 固定大小類 的窗口,一類是 大小動(dòng)態(tài)變化 的窗口。 你正在探訪一家農(nóng)場(chǎng),農(nóng)場(chǎng)從左到右種植了一排果樹(shù)。這些樹(shù)用一個(gè)整數(shù)數(shù)組 fruits 表示,其中 fru

    2024年02月08日
    瀏覽(16)
  • 算法專題整理:滑動(dòng)窗口

    算法專題整理:滑動(dòng)窗口

    視頻課程:同向雙指針 滑動(dòng)窗口【基礎(chǔ)算法精講 01】_嗶哩嗶哩_bilibili 滑動(dòng)窗口也可以理解為雙指針?lè)ǖ囊环N。 滑動(dòng)窗口的核心在于 連續(xù) !如果需要得到的結(jié)果是 滿足某種較為明顯條件 的 連續(xù) 的 子數(shù)組 ,可以考慮使用滑動(dòng)窗口來(lái)做。 通常情況下,滑動(dòng)窗口是 枚舉右端

    2024年02月12日
    瀏覽(14)
  • 【算法專題】滑動(dòng)窗口

    題目鏈接 - Leetcode -209.長(zhǎng)度最小的子數(shù)組 Leetcode -209.長(zhǎng)度最小的子數(shù)組 題目:給定一個(gè)含有 n 個(gè)正整數(shù)的數(shù)組和一個(gè)正整數(shù) target 。 找出該數(shù)組中滿足其和 ≥ target 的長(zhǎng)度最小的 連續(xù)子數(shù)組[numsl, numsl + 1, …, numsr - 1, numsr] ,并返回其長(zhǎng)度。 如果不存在符合條件的子數(shù)組,返

    2024年02月05日
    瀏覽(17)
  • 【LeetCode 算法專題突破】滑動(dòng)窗口(?)

    【LeetCode 算法專題突破】滑動(dòng)窗口(?)

    學(xué)完了雙指針?biāo)惴ǎ瑒?dòng)窗口那肯定是逃不掉了,我個(gè)人感覺(jué)他倆就不分家,不把滑動(dòng)窗口的題目好好刷上一刷我都難受 先來(lái)一道經(jīng)典的滑動(dòng)窗口試試水 題目鏈接:209. 長(zhǎng)度最小的子數(shù)組 其實(shí)滑動(dòng)窗口題目的解法都大同小異,我們基本上寫(xiě)幾道題目,就能很好的掌握這個(gè)算

    2024年02月07日
    瀏覽(22)
  • 力扣熱題100_滑動(dòng)窗口_438_找到字符串中所有字母異位詞

    438. 找到字符串中所有字母異位詞 給定兩個(gè)字符串 s 和 p,找到 s 中所有 p 的 異位詞 的子串,返回這些子串的起始索引。不考慮答案輸出的順序。 異位詞 指由相同字母重排列形成的字符串(包括相同的字符串)。 示例 1: 輸入: s = “cbaebabacd”, p = “abc” 輸出: [0,6] 解釋: 起

    2024年02月19日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包