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

LeetCode算法小抄--滑動(dòng)窗口算法

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

?申明: 未經(jīng)許可,禁止以任何形式轉(zhuǎn)載,若要引用,請(qǐng)標(biāo)注鏈接地址。 全文共計(jì)6244字,閱讀大概需要3分鐘
??更多學(xué)習(xí)內(nèi)容, 歡迎??關(guān)注??文末我的個(gè)人微信公眾號(hào):不懂開(kāi)發(fā)的程序猿
個(gè)人網(wǎng)站:https://jerry-jy.co/

滑動(dòng)窗口算法

思路

1、我們?cè)谧址?S 中使用雙指針中的左右指針技巧,初始化 left = right = 0,把索引左閉右開(kāi)區(qū)間 [left, right) 稱(chēng)為一個(gè)「窗口」。

理論上你可以設(shè)計(jì)兩端都開(kāi)或者兩端都閉的區(qū)間,但設(shè)計(jì)為左閉右開(kāi)區(qū)間是最方便處理的。因?yàn)檫@樣初始化 left = right = 0 時(shí)區(qū)間 [0, 0) 中沒(méi)有元素,但只要讓 right 向右移動(dòng)(擴(kuò)大)一位,區(qū)間 [0, 1) 就包含一個(gè)元素 0 了。如果你設(shè)置為兩端都開(kāi)的區(qū)間,那么讓 right 向右移動(dòng)一位后開(kāi)區(qū)間 (0, 1) 仍然沒(méi)有元素;如果你設(shè)置為兩端都閉的區(qū)間,那么初始區(qū)間 [0, 0] 就包含了一個(gè)元素。這兩種情況都會(huì)給邊界處理帶來(lái)不必要的麻煩。

2、我們先不斷地增加 right 指針擴(kuò)大窗口 [left, right),直到窗口中的字符串符合要求(包含了 T 中的所有字符)。

3、此時(shí),我們停止增加 right,轉(zhuǎn)而不斷增加 left 指針縮小窗口 [left, right),直到窗口中的字符串不再符合要求(不包含 T 中的所有字符了)。同時(shí),每次增加 left,我們都要更新一輪結(jié)果。

4、重復(fù)第 2 和第 3 步,直到 right 到達(dá)字符串 S 的盡頭。

這個(gè)思路其實(shí)也不難,第 2 步相當(dāng)于在尋找一個(gè)「可行解」,然后第 3 步在優(yōu)化這個(gè)「可行解」,最終找到最優(yōu)解

框架
/* 滑動(dòng)窗口算法框架 */
void slidingWindow(string s) {
    // 用合適的數(shù)據(jù)結(jié)構(gòu)記錄窗口中的數(shù)據(jù)
    unordered_map<char, int> window, need;
    
    int left = 0, right = 0;
    while (right < s.size()) {
        // c 是將移入窗口的字符
        char c = s[right];
        // 增大窗口
        right++;
        // 進(jìn)行窗口內(nèi)數(shù)據(jù)的一系列更新
        ...

        /*** debug 輸出的位置 ***/
        // 注意在最終的解法代碼中不要 print
        // 因?yàn)?IO 操作很耗時(shí),可能導(dǎo)致超時(shí)
        printf("window: [%d, %d)\n", left, right);
        /********************/
        
        // 判斷左側(cè)窗口是否要收縮
        while (window needs shrink) {
            // d 是將移出窗口的字符
            char d = s[left];
            // 縮小窗口
            left++;
            // 進(jìn)行窗口內(nèi)數(shù)據(jù)的一系列更新
            ...
        }
    }
}

Java 處理字符串不方便,所以代碼為 C++ 實(shí)現(xiàn)。

unordered_map 就是哈希表(字典),相當(dāng)于 Java 的 HashMap,它的一個(gè)方法 count(key) 相當(dāng)于 Java 的 containsKey(key) 可以判斷鍵 key 是否存在。

可以使用方括號(hào)訪(fǎng)問(wèn)鍵對(duì)應(yīng)的值 map[key]。需要注意的是,如果該 key 不存在,C++ 會(huì)自動(dòng)創(chuàng)建這個(gè) key,并把 map[key] 賦值為 0。所以代碼中多次出現(xiàn)的 map[key]++ 相當(dāng)于 Java 的 map.put(key, map.getOrDefault(key, 0) + 1)

另外,Java 中的 Integer 和 String 這種包裝類(lèi)不能直接用 == 進(jìn)行相等判斷,而應(yīng)該使用類(lèi)的 equals 方法。

需要思考以下幾個(gè)問(wèn)題

1、什么時(shí)候應(yīng)該移動(dòng) right 擴(kuò)大窗口?窗口加入字符時(shí),應(yīng)該更新哪些數(shù)據(jù)?

2、什么時(shí)候窗口應(yīng)該暫停擴(kuò)大,開(kāi)始移動(dòng) left 縮小窗口?從窗口移出字符時(shí),應(yīng)該更新哪些數(shù)據(jù)?

3、我們要的結(jié)果應(yīng)該在擴(kuò)大窗口時(shí)還是縮小窗口時(shí)進(jìn)行更新?

如果一個(gè)字符進(jìn)入窗口,應(yīng)該增加 window 計(jì)數(shù)器;如果一個(gè)字符將移出窗口的時(shí)候,應(yīng)該減少 window 計(jì)數(shù)器;當(dāng) valid 滿(mǎn)足 need 時(shí)應(yīng)該收縮窗口;應(yīng)該在收縮窗口的時(shí)候更新最終結(jié)果。

其中 valid 變量表示窗口中滿(mǎn)足 need 條件的字符個(gè)數(shù),如果 validneed.size 的大小相同,則說(shuō)明窗口已滿(mǎn)足條件,已經(jīng)完全覆蓋了串 T

76. 最小覆蓋子串[hard]

給你一個(gè)字符串 s 、一個(gè)字符串 t 。返回 s 中涵蓋 t 所有字符的最小子串。如果 s 中不存在涵蓋 t 所有字符的子串,則返回空字符串 "" 。

/**
 * 求字符串 s 中包含字符串 t 所有字符的最小子串
 * @param s 源字符串
 * @param t 給定字符串
 * @return 滿(mǎn)足條件的最小子串
 */
class Solution {
    public String minWindow(String s, String t) {
    // 用于記錄需要的字符和窗口中的字符及其出現(xiàn)的次數(shù)
    Map<Character, Integer> need = new HashMap<>();
    Map<Character, Integer> window = new HashMap<>();
    // 統(tǒng)計(jì) t 中各字符出現(xiàn)次數(shù)
    for (char c : t.toCharArray()) 
        need.put(c, need.getOrDefault(c, 0) + 1);

    int left = 0, right = 0;
    int valid = 0; // 窗口中滿(mǎn)足需要的字符個(gè)數(shù)
    // 記錄最小覆蓋子串的起始索引及長(zhǎng)度
    int start = 0, len = Integer.MAX_VALUE;
    while (right < s.length()) {
        // c 是將移入窗口的字符
        char c = s.charAt(right);
        // 擴(kuò)大窗口
        right++;
        // 進(jìn)行窗口內(nèi)數(shù)據(jù)的一系列更新
        if (need.containsKey(c)) {
            window.put(c, window.getOrDefault(c, 0) + 1);
            if (window.get(c).equals(need.get(c)))
                valid++; // 只有當(dāng) window[c] 和 need[c] 對(duì)應(yīng)的出現(xiàn)次數(shù)一致時(shí),才能滿(mǎn)足條件,valid 才能 +1
        }

        // 判斷左側(cè)窗口是否要收縮
        while (valid == need.size()) {
            // 更新最小覆蓋子串
            if (right - left < len) {
                start = left;
                len = right - left;
            }
            // d 是將移出窗口的字符
            char d = s.charAt(left);
            // 縮小窗口
            left++;
            // 進(jìn)行窗口內(nèi)數(shù)據(jù)的一系列更新
            if (need.containsKey(d)) {
                if (window.get(d).equals(need.get(d)))
                    valid--; // 只有當(dāng) window[d] 內(nèi)的出現(xiàn)次數(shù)和 need[d] 相等時(shí),才能 -1
                window.put(d, window.get(d) - 1);
            }
        }
    }
    // 返回最小覆蓋子串
    return len == Integer.MAX_VALUE ? "" : s.substring(start, start + len);
    }
}

使用 Java 的讀者要尤其警惕語(yǔ)言特性的陷阱。Java 的 Integer,String 等類(lèi)型判定相等應(yīng)該用 equals 方法而不能直接用等號(hào) ==,這是 Java 包裝類(lèi)的一個(gè)隱晦細(xì)節(jié)。所以在縮小窗口更新數(shù)據(jù)的時(shí)候,不能直接改寫(xiě)為 window.get(d) == need.get(d),而要用 window.get(d).equals(need.get(d)),之后的題目代碼同理。

567. 字符串的排列

給你兩個(gè)字符串 s1s2 ,寫(xiě)一個(gè)函數(shù)來(lái)判斷 s2 是否包含 s1 的排列。如果是,返回 true ;否則,返回 false 。

換句話(huà)說(shuō),s1 的排列之一是 s2子串 。

思路:這種題目,是明顯的滑動(dòng)窗口算法,相當(dāng)給你一個(gè) S 和一個(gè) T,請(qǐng)問(wèn)你 S 中是否存在一個(gè)子串,包含 T 中所有字符且不包含其他字符

class Solution {
    public boolean checkInclusion(String s1, String s2) {
    // 用于記錄需要的字符和窗口中的字符及其出現(xiàn)的次數(shù)
    Map<Character, Integer> need = new HashMap<>();
    Map<Character, Integer> window = new HashMap<>();
    // 統(tǒng)計(jì) s1 中各字符出現(xiàn)次數(shù)
    for(int i = 0; i < s1.length(); i++){
        char c = s1.charAt(i);
        need.put(c, need.getOrDefault(c, 0) + 1);
    }
    int left = 0, right = 0;
    int valid = 0; // 窗口中滿(mǎn)足需要的字符個(gè)數(shù)
    // 記錄最小覆蓋子串的起始索引及長(zhǎng)度
    //int start = 0, len = Integer.MAX_VALUE;
    while (right < s2.length()) {
        // c 是將移入窗口的字符
        char c = s2.charAt(right);
        // 擴(kuò)大窗口
        right++;
        // 進(jìn)行窗口內(nèi)數(shù)據(jù)的一系列更新
        if (need.containsKey(c)) {
            window.put(c, window.getOrDefault(c, 0) + 1);
            if (window.get(c).equals(need.get(c)))
                valid++; // 只有當(dāng) window[c] 和 need[c] 對(duì)應(yīng)的出現(xiàn)次數(shù)一致時(shí),才能滿(mǎn)足條件,valid 才能 +1
        }

        // 判斷左側(cè)窗口是否要收縮
        while (right - left >= s1.length()) {
            // 在這里判斷是否找到了合法的子串,窗口中有一個(gè)合法的排列,就立即返回
            if (valid == need.size()) {
                return true;
            }
            // d 是將移出窗口的字符
            char d = s2.charAt(left);
            // 縮小窗口
            left++;
            // 進(jìn)行窗口內(nèi)數(shù)據(jù)的一系列更新
            if (need.containsKey(d)) {
                if (window.get(d).equals(need.get(d)))
                    valid--; // 只有當(dāng) window[d] 內(nèi)的出現(xiàn)次數(shù)和 need[d] 相等時(shí),才能 -1
                window.put(d, window.get(d) - 1);
            }
        }
    }
    // 未找到符合條件的子串
    return false;
    }
}

注意哦,輸入的 s1 是可以包含重復(fù)字符的,所以這個(gè)題難度不小

總結(jié):對(duì)于這道題的解法代碼,基本上和最小覆蓋子串一模一樣,只需要改變幾個(gè)地方:

1、本題移動(dòng) left 縮小窗口的時(shí)機(jī)是窗口大小大于 t.size() 時(shí),因?yàn)榕帕新?,顯然長(zhǎng)度應(yīng)該是一樣的。

2、當(dāng)發(fā)現(xiàn) valid == need.size() 時(shí),就說(shuō)明窗口中就是一個(gè)合法的排列,所以立即返回 true。

至于如何處理窗口的擴(kuò)大和縮小,和最小覆蓋子串完全相同。

由于這道題中 [left, right) 其實(shí)維護(hù)的是一個(gè)定長(zhǎng)的窗口,窗口大小為 t.size()。因?yàn)槎ㄩL(zhǎng)窗口每次向前滑動(dòng)時(shí)只會(huì)移出一個(gè)字符,所以可以把內(nèi)層的 while 改成 if,效果是一樣的。

438. 找到字符串中所有字母異位詞

給定兩個(gè)字符串 sp,找到 s 中所有 p異位詞 的子串,返回這些子串的起始索引。不考慮答案輸出的順序。

異位詞 指由相同字母重排列形成的字符串(包括相同的字符串)。

class Solution {
    public List<Integer> findAnagrams(String s, String p) {
    // 用于記錄需要的字符和窗口中的字符及其出現(xiàn)的次數(shù)
    Map<Character, Integer> need = new HashMap<>();
    Map<Character, Integer> window = new HashMap<>();
    // 統(tǒng)計(jì) p 中各字符出現(xiàn)次數(shù)
    for(int i = 0; i < p.length(); i++){
        char c = p.charAt(i);
        need.put(c, need.getOrDefault(c, 0) + 1);
    }
    int left = 0, right = 0;
    int valid = 0; // 窗口中滿(mǎn)足需要的字符個(gè)數(shù)
    // 記錄保存符合條件索引位置
    List<Integer> res = new ArrayList<>();
    while (right < s.length()) {
        // c 是將移入窗口的字符
        char c = s.charAt(right);
        // 擴(kuò)大窗口
        right++;
        // 進(jìn)行窗口內(nèi)數(shù)據(jù)的一系列更新
        if (need.containsKey(c)) {
            window.put(c, window.getOrDefault(c, 0) + 1);
            if (window.get(c).equals(need.get(c)))
                valid++; // 只有當(dāng) window[c] 和 need[c] 對(duì)應(yīng)的出現(xiàn)次數(shù)一致時(shí),才能滿(mǎn)足條件,valid 才能 +1
        }

        // 判斷左側(cè)窗口是否要收縮
        while (right - left >= p.length()) {
            // 在這里判斷是否找到了合法的子串,窗口中有一個(gè)合法的排列,就立即將索引加入list中
            if (valid == need.size()) {
                res.add(left);
            }
            // d 是將移出窗口的字符
            char d = s.charAt(left);
            // 縮小窗口
            left++;
            // 進(jìn)行窗口內(nèi)數(shù)據(jù)的一系列更新
            if (need.containsKey(d)) {
                if (window.get(d).equals(need.get(d)))
                    valid--; // 只有當(dāng) window[d] 內(nèi)的出現(xiàn)次數(shù)和 need[d] 相等時(shí),才能 -1
                window.put(d, window.get(d) - 1);
            }
        }
    }
    // 未找到符合條件的子串
    return res;        
    }
}

跟尋找字符串的排列一樣,只是找到一個(gè)合法異位詞(排列)之后將起始索引加入 res 即可。

3. 無(wú)重復(fù)字符的最長(zhǎng)子串

給定一個(gè)字符串 s ,請(qǐng)你找出其中不含有重復(fù)字符的 最長(zhǎng)子串 的長(zhǎng)度。

class Solution {
    public int lengthOfLongestSubstring(String s) {
    Map<Character, Integer> window = new HashMap<>();

    int left = 0, right = 0;
    // 記錄結(jié)果
    int res = 0;
    while (right < s.length()) {
        // c 是將移入窗口的字符
        char c = s.charAt(right);
        // 擴(kuò)大窗口
        right++;
        // 進(jìn)行窗口內(nèi)數(shù)據(jù)的一系列更新
        window.put(c, window.getOrDefault(c, 0) + 1);
        // 判斷左側(cè)窗口是否要收縮
        while (window.get(c) > 1) {
            // d 是將移出窗口的字符
            char d = s.charAt(left);
            // 縮小窗口
            left++;
            // 進(jìn)行窗口內(nèi)數(shù)據(jù)的一系列更新
            window.put(d, window.get(d) - 1);
        }
        // 在這里更新答案
        res = Math.max(res, right - left);
    }
    // 未找到符合條件的子串
    return res;         
    }        
}

–end–文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-408143.html

到了這里,關(guān)于LeetCode算法小抄--滑動(dòng)窗口算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(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)文章

  • LeetCode算法小抄 -- 鏈表(快慢指針、雙指針、回文鏈表)

    ?申明: 未經(jīng)許可,禁止以任何形式轉(zhuǎn)載,若要引用,請(qǐng)標(biāo)注鏈接地址。 全文共計(jì)10077字,閱讀大概需要10分鐘 ??更多學(xué)習(xí)內(nèi)容, 歡迎??關(guān)注??文末我的個(gè)人微信公眾號(hào):不懂開(kāi)發(fā)的程序猿 個(gè)人網(wǎng)站:https://jerry-jy.co/ Collection 子接口之 Queue (LeetCode上經(jīng)常用,手撕算法題!

    2023年04月08日
    瀏覽(22)
  • 【map】【滑動(dòng)窗口】【優(yōu)先隊(duì)列】LeetCode480滑動(dòng)窗口中位數(shù)

    【map】【滑動(dòng)窗口】【優(yōu)先隊(duì)列】LeetCode480滑動(dòng)窗口中位數(shù)

    動(dòng)態(tài)規(guī)劃 多源路徑 字典樹(shù) LeetCode2977:轉(zhuǎn)換字符串的最小成本 C++算法:滑動(dòng)窗口總結(jié) map 優(yōu)先隊(duì)列 中位數(shù)是有序序列最中間的那個(gè)數(shù)。如果序列的長(zhǎng)度是偶數(shù),則沒(méi)有最中間的數(shù);此時(shí)中位數(shù)是最中間的兩個(gè)數(shù)的平均數(shù)。 例如: [2,3,4],中位數(shù)是 3 [2,3],中位數(shù)是 (2 + 3) / 2 =

    2024年02月03日
    瀏覽(26)
  • leetcode:滑動(dòng)窗口

    leetcode:滑動(dòng)窗口

    目錄 1.定長(zhǎng)滑動(dòng)窗口 1.1?幾乎唯一子數(shù)組的最大和(使用map來(lái)計(jì)數(shù)) 1.2 長(zhǎng)度為k子數(shù)組中的最大和 2.不定長(zhǎng)滑動(dòng)窗口 2.1 最多k個(gè)重復(fù)元素的最長(zhǎng)子數(shù)組 2.2 絕對(duì)差不超過(guò)限制的最長(zhǎng)連續(xù)子數(shù)組(multiset) 2.3 將x減到0的最小操作數(shù)(正難則反 逆向思維) 2.4 統(tǒng)計(jì)最大元素出現(xiàn)至少k次的

    2024年02月02日
    瀏覽(21)
  • 【leetcode C++】滑動(dòng)窗口

    【leetcode C++】滑動(dòng)窗口

    給定一個(gè)含有 n 個(gè)正整數(shù)的數(shù)組和一個(gè)正整數(shù) target 。 找出該數(shù)組中滿(mǎn)足其和 ≥ target 的長(zhǎng)度最小的 連續(xù)子數(shù)組 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其長(zhǎng)度 。 如果不存在符合條件的子數(shù)組,返回 0 。 . - 力扣(LeetCode) 畫(huà)圖 和 文字 分析 先說(shuō)說(shuō)有關(guān)滑動(dòng)窗口的知識(shí) 滑動(dòng)窗

    2024年04月09日
    瀏覽(25)
  • leetcode—滑動(dòng)窗口

    給定一個(gè)字符串? s ?,請(qǐng)你找出其中不含有重復(fù)字符的? 最長(zhǎng)子串? 的長(zhǎng)度。 示例?1: 滑動(dòng)窗口 使用兩個(gè)指針 表示字符串中某個(gè)子串的左右邊界【i, right】 在每一步的操作中,將左指針i 向右移動(dòng)一位,表示開(kāi)始枚舉下一個(gè)字符作為起始位置,然后不斷的向右移動(dòng)右指針(

    2024年01月17日
    瀏覽(22)
  • LeetCode239.滑動(dòng)窗口最大值

    LeetCode239.滑動(dòng)窗口最大值

    看到這道題我就有印象, 我在劍指offer里面做過(guò)這道題,我記得當(dāng)時(shí)用的是優(yōu)先隊(duì)列,然后我腦子里一下子就有了想法,拿優(yōu)先隊(duì)列作為窗口,每往右移動(dòng)一步,把左邊的數(shù)remove掉,把右邊的數(shù)add進(jìn)來(lái),然后把隊(duì)頭,也就是窗口中最大的元素放入答案數(shù)組,然后就寫(xiě)出了如下

    2024年02月11日
    瀏覽(28)
  • leetcode-239-滑動(dòng)窗口最大值

    leetcode-239-滑動(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)窗口中的最大值 。 示例: 輸入:nums = [1,3,-1,-3,5,3,6,7], k = 3 輸出:[3,3,5,5,6,7] 解釋?zhuān)?滑動(dòng)

    2024年02月07日
    瀏覽(25)
  • 【LeetCode熱題100】【子串】滑動(dòng)窗口最大值

    【LeetCode熱題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: 示例 2: 提示: 1 = nums.length = 105 -104?= nums[i] = 104 1 =

    2024年01月19日
    瀏覽(25)
  • 【滑動(dòng)窗口】leetcode1004:最大連續(xù)1的個(gè)數(shù)

    【滑動(dòng)窗口】leetcode1004:最大連續(xù)1的個(gè)數(shù)

    最大連續(xù)1的個(gè)數(shù) ?這道題要我們找最大連續(xù)1的個(gè)數(shù),看到“連續(xù)”二字,我們要想到滑動(dòng)窗口的方法?;瑒?dòng)窗口的研究對(duì)象是一個(gè)連續(xù)的區(qū)間,這個(gè)區(qū)間需要滿(mǎn)足某個(gè)條件。那么本題要找的是怎樣的區(qū)間呢?是一個(gè)通過(guò)翻轉(zhuǎn)0后得到連續(xù)1的區(qū)間,而最多可以翻轉(zhuǎn)k個(gè)字符。 故

    2024年02月11日
    瀏覽(18)
  • 劍指 Offer 59 - I. 滑動(dòng)窗口的最大值 / LeetCode 239. 滑動(dòng)窗口最大值(優(yōu)先隊(duì)列 / 單調(diào)隊(duì)列)

    鏈接:劍指 Offer 59 - I. 滑動(dòng)窗口的最大值;LeetCode 239. 滑動(dòng)窗口最大值 難度:困難 下一篇:劍指 Offer 59 - II. 隊(duì)列的最大值(單調(diào)隊(duì)列) 給你一個(gè)整數(shù)數(shù)組 nums,有一個(gè)大小為 k 的滑動(dòng)窗口從數(shù)組的最左側(cè)移動(dòng)到數(shù)組的最右側(cè)。你只可以看到在滑動(dòng)窗口內(nèi)的 k 個(gè)數(shù)字。滑動(dòng)窗

    2024年02月15日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包