精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

十五周算法訓練營——滑動窗口

開發 前端
今天是十五周算法訓練營的第七周,主要講滑動窗口專題。

// 滑動窗口算法解題思路
1. 使用雙指針技巧,初始化left=right=0,把索引左閉右開區間[left, right)稱為一個窗口
2. 先不斷增加right指針,擴大窗口
3. 當結果不符合要求,進行窗口收縮
4. 重復2、3步,直到終止條件

和為s的連續正數序列

輸入一個正整數 target ,輸出所有和為 target 的連續正整數序列(至少含有兩個數)。

序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。

示例 1:

輸入:target = 9 輸出:[[2,3,4],[4,5]]

// 該問題是一個滑動窗口問題
// 滑動窗口算法解題思路
// 1. 使用雙指針技巧,初始化left=right=0,把索引左閉右開區間[left, right)稱為一個窗口
// 2. 先不斷增加right指針,擴大窗口
// 3. 當結果不符合要求,進行窗口收縮
// 4. 重復2、3步,直到終止條件
function findContinuousSequence(target) {
    const result = [];
    // 滑動窗口
    const window = [];
    let sum = 0;
    const middle = (target + 1) << 1;
    let left = 1;
    let right = 1;

    for (let i = 1; i <= middle; i++) {
        // 擴充窗口
        window.push(i);
        sum += i;
        right++;

        // 判斷是否收縮窗口
        while (sum > target) {
            // 進行窗口收縮
            const temp = window.shift();
            left++;
            sum -= temp;
        }

        if (sum === target && window.length > 1) {
            result.push([...window]);
        }
    }

    return result;
}

console.log(findContinuousSequence(9));

最長不含重復字符的子字符串

請從字符串中找出一個最長的不包含重復字符的子字符串,計算該最長子字符串的長度。

示例 1:

輸入: "abcabcbb" 輸出: 3 解釋: 因為無重復字符的最長子串是 "abc",所以其長度為 3。

/**
 * 最長不含重復字符的子字符串
 */
// 可以通過滑動窗口解決
function lengthOfLongestSubstring(s) {
    // 滑動窗口
    const window = {};

    // 左右指針
    let left = 0;
    let right = 0;

    let result = 0;

    for (let i = 0; i < s.length; i++) {
        const c = s.charAt(i);

        // 擴充窗口
        window[c] = window[c] ? window[c] + 1 : 1;
        right++;

        // 判斷是否收縮窗口
        while (window[c] > 1) {
            // 進行窗口收縮
            const leftC = s.charAt(left);
            window[leftC]--;
            left++;
        }

        result = Math.max(result, right - left);
    }

    return result;
}

const s = 'abcabcbb';
console.log(lengthOfLongestSubstring(s));

長度最小的子數組

給定一個含有 n 個正整數的數組和一個正整數 target 。

找出該數組中滿足其和 ≥ target 的長度最小的 連續子數組 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其長度。如果不存在符合條件的子數組,返回 0 。

示例 1:

輸入:target = 7, nums = [2,3,1,2,4,3]
輸出:2
解釋:子數組 [4,3] 是該條件下的長度最小的子數組。
// 滑動窗口
function minSubArrayLen(target, nums) {
    let left = 0;
    let right = 0;
    let sum = 0;
    let result = Infinity;

    while (right < nums.length) {
        // 更新狀態
        sum += nums[right];
        right++;

        // 收縮窗口
        while (sum >= target) {
            result = Math.min(result, right - left);
            const presentVal = nums[left];
            // 更新狀態
            sum -= presentVal;
            left++;
        }
    }

    return result === Infinity ? 0 : result;
}

無重復字符的最長子串

一、題目

給定一個字符串 s ,請你找出其中不含有重復字符的 最長子串 的長度。

示例 1:

輸入: s = "abcabcbb" 輸出: 3 解釋: 因為無重復字符的最長子串是 "abc",所以其長度為 3。

二、題解

function lengthOfLongestSubstring(s) {
    // 滑動窗口
    const window = {};

    // 滑動窗口的兩個指針
    let left = 0;
    let right = 0;

    // 結果
    let result = 0;

    // 循環終止條件
    while (right < s.length) {
        const c = s[right];

        // 進行窗口內數據的一系列更新
        window[c] = window[c] ? window[c] + 1 : 1;

        // 移動窗口右側
        right++;

        // 判斷左側窗口是否要收縮
        while (window[c] > 1) {
            const d = s[left];

            // 左側窗口收縮
            left++;

            // 進行窗口內的一系列更新
            window[d]--;
        }

        // 更新答案
        result = Math.max(result, right - left);
    }

    return result;
}

const s = 'abcabcbb';

console.log(lengthOfLongestSubstring(s));

字符串排列

一、題目

給你兩個字符串 s1 和 s2 ,寫一個函數來判斷 s2 是否包含 s1 的排列。如果是,返回 true ;否則,返回 false 。

換句話說,s1 的排列之一是 s2 的 子串 。

示例 1:

輸入:s1 = "ab" s2 = "eidbaooo" 輸出:true 解釋:s2 包含 s1 的排列之一 ("ba").

二、題解

/**
 * 算法思路:
 * 滑動窗口
 * s2包含s1的最小子串,然后最小子串長度跟s1長度相等
 */

function checkInclusion(s1, s2) {
    // 需要湊齊的字符
    const need = {};
    for (let i = 0; i < s1.length; i++) {
        need[s1[i]] = need[s1[i]] ? need[s1[i]] + 1 : 1;
    }

    // 滑動窗口
    const window = {};

    // 滑動窗口的兩端
    let left = 0;
    let right = 0;

    // 表示窗口中滿足need部分的字符數
    let valid = 0;

    while (right < s2.length) {
        const c = s2[right];

        // 進行窗口內數據的一系列更新
        if (need[c]) {
            window[c] = window[c] ? window[c] + 1 : 1;
            if (window[c] === need[c]) {
                valid++;
            }
        }

        // 移動窗口右側
        right++;

        // 判斷左側窗口是否要收縮(當s1字符和滑動窗口字符大小相等,此時就要收縮敞口)
        while (right - left >= s1.length) {
            // 在這里判斷是否找到了合法的子串
            if (valid === Object.keys(need).length) {
                return true;
            }

            const d = s2[left];
            left++;

            // 進行窗口內數據的一系列更新
            if (need[d] !== undefined) {
                if (window[d] === need[d]) {
                    valid--;
                }

                window[d]--;
            }
        }
    }

    return false;
}

const s1 = 'ab';
const s2 = 'eidbaooo';

console.log(checkInclusion(s1, s2));

滑動窗口的最大值

給你一個整數數組 nums,有一個大小為 k 的滑動窗口從數組的最左側移動到數組的最右側。你只可以看到在滑動窗口內的 k 個數字。滑動窗口每次只向右移動一位。

返回 滑動窗口中的最大值 。

示例 1:

輸入:nums = [1,3,-1,-3,5,3,6,7], k = 3 輸出:[3,3,5,5,6,7] 解釋: 滑動窗口的位置最大值

[1  3  -1] -3  5  3  6  7       3 1 [3  -1  -3] 5  3  6  7       3 1  3 [-1  -3  5] 3  6  7       5 1  3  -1 [-3  5  3] 6  7       5 1  3  -1  -3 [5  3  6] 7       6 1  3  -1  -3  5 [3  6  7]      7

該問題用單調隊列解決(單調隊列可以解決滑動窗口問題)。

// 首先建立一個單調隊列的類
class MonotonicQueue {
    constructor() {
        this.queue = [];
    }

    // 在隊尾添加元素n
    // 該函數在加入元素時,會將其前面比自己小的元素全部刪除掉
    push(n) {
        // 將前面小于自己的元素全部刪除掉
        while (this.queue.length && n > this.queue[this.queue.length - 1]) {
            this.queue.pop();
        }

        this.queue.push(n);
    }

    // 對頭元素如果是n,則刪除它
    pop(n) {
        if (this.queue.length > 0 && n === this.queue[0]) {
            this.queue.shift();
        }
    }

    // 返回當前隊列中的最大值
    // 因為push元素時都會將比自己小的刪除掉,最終結果就是一個遞減的順序,則最大值就是隊列首部內容
    max() {
        return this.queue[0];
    }
}
function maxSlidingWindow(nums, k) {
    // 實例化一個單調隊列
    const monotonicQueue = new MonotonicQueue();
    const result = [];

    for (let i = 0; i < nums.length; i++) {
        // 先填滿整個滑動窗口的k-1個元素
        if (i < k - 1) {
            monotonicQueue.push(nums[i]);
        } else {
            // 窗口向前滑動,添加新元素
            monotonicQueue.push(nums[i]);
            // 記錄當前窗口的最大值
            result.push(monotonicQueue.max());
            // 移除隊列首部元素
            monotonicQueue.pop(nums[i - k + 1]);
        }
    }

    return result;
}
責任編輯:姜華 來源: 前端點線面
相關推薦

2023-06-05 07:30:51

2023-05-29 07:31:35

單調棧數組循環

2023-04-17 07:33:11

反轉鏈表移除鏈表

2023-05-22 07:31:32

Nums快慢指針

2023-04-03 07:33:05

數組排序快速排序法

2023-07-10 08:01:13

島嶼問題算法

2023-07-03 08:01:54

2023-06-26 07:31:44

屬性物品背包

2023-06-13 06:51:15

斐波那契數算法

2023-06-19 07:31:34

普通動態規劃字符串

2021-09-23 10:53:43

數據中心

2016-08-05 20:21:51

CTO導師技術

2016-08-05 18:53:25

CTO導師技術

2021-07-08 20:22:05

AI

2013-04-22 12:58:14

TechExcel敏捷研發

2009-04-29 18:12:41

GAUPS培訓

2016-10-17 13:50:31

2013-07-13 22:38:14

微軟社區微軟MVPMWW

2015-01-04 14:54:28

IT訓練營

2016-08-04 13:41:27

CTO訓練營,技術管理
點贊
收藏

51CTO技術棧公眾號

五月国产精品| 波多野在线观看| 激情文学综合插| 欧美高清一级大片| 黑人巨大精品欧美| 亚洲ww精品| 婷婷夜色潮精品综合在线| 欧美大香线蕉线伊人久久| 日批视频免费观看| 黄色成人精品网站| 中文字幕亚洲欧美日韩高清 | dy888亚洲精品一区二区三区| 国产乱妇无码大片在线观看| 91av在线播放| 亚洲国产精品免费在线观看| 亚洲区小说区图片区qvod按摩| 欧美色综合久久| 日韩免费视频播放| 免费黄色在线| 久久精品欧美日韩精品| 亚洲综合中文字幕在线| 六月丁香激情综合| 欧美激情第8页| 国产一区二区成人| 在线观看国产三级| 日韩中文在线| 欧美日韩高清在线| 国产高清精品在线观看| 日本aa在线| 中文字幕不卡在线观看| 国产手机精品在线| 国产又黄又粗又长| 久久午夜影视| 欧美一级电影在线| 国产一级二级毛片| 亚洲色图网站| 日韩一区二区久久久| 级毛片内射视频| 亚洲国产精品嫩草影院久久av| 日韩精品一区二区三区在线| 女同激情久久av久久| 精品三区视频| 欧美色老头old∨ideo| 国内外免费激情视频| 国产美女精品写真福利视频| 亚洲影视资源网| 欧洲xxxxx| 国产三级在线播放| 亚洲视频一二三区| 久久久成人精品一区二区三区| eeuss影院在线播放| 久久久精品免费观看| 久久综合九色综合久99| 午夜在线观看视频18| www.亚洲色图.com| 精品视频一区二区| 日韩一二三四| 久久久777精品电影网影网| 免费久久一级欧美特大黄| 欧美挠脚心网站| 久久久国产午夜精品| 清纯唯美一区二区三区| 精品无人乱码| 中文字幕精品综合| 一区高清视频| av中文字幕在线观看| 一区二区理论电影在线观看| 一本大道东京热无码aⅴ| 日本色护士高潮视频在线观看| 亚洲一区二区三区自拍| 天堂…中文在线最新版在线| 日韩欧美精品一区二区三区| 一本到三区不卡视频| 久久久久国产一区| 精品一区二区三区中文字幕在线 | 国产在线视频一区| 国产偷拍一区二区| 成人爱爱电影网址| 欧美日韩在线播放一区二区| 69视频在线观看| 亚洲激情第一区| 波多野结衣之无限发射| 日韩欧美看国产| 777午夜精品免费视频| 性生交大片免费看l| 美女视频免费精品| 中文字幕亚洲二区| 国产在线综合网| 天堂蜜桃一区二区三区| 国产中文字幕日韩| 色婷婷av一区二区三区之e本道| 26uuu国产日韩综合| 亚洲在线视频一区二区| 黄页网站在线| 欧美在线不卡一区| 国产成人av片| av一区二区在线播放| 欧美xxxx18国产| 日本视频网站在线观看| 韩国理伦片一区二区三区在线播放| 国产91一区二区三区| 国产在线91| 亚洲国产精品一区二区久久| 免费男同深夜夜行网站| 亚洲精品一区二区三区在线| 亚洲美腿欧美激情另类| 久久久久亚洲AV成人| 日欧美一区二区| 国产亚洲欧美一区二区| 日韩子在线观看| 欧美视频在线观看 亚洲欧| 欧美大片久久久| 蜜桃国内精品久久久久软件9| 久久精品2019中文字幕| 高清乱码免费看污| 成人永久看片免费视频天堂| 亚洲国产一区在线| 欧美电影免费观看网站| 亚洲第一福利视频| 麻豆精品一区二区三区视频| 奇米四色…亚洲| 明星裸体视频一区二区| 日韩三级免费| 日韩一级成人av| 国产麻豆a毛片| 久久三级福利| 国产在线一区二区三区四区| а√天堂资源地址在线下载| 欧美探花视频资源| 瑟瑟视频在线观看| 亚洲激情国产| 成人午夜电影在线播放| 91sp网站在线观看入口| 在线看一区二区| 精品无码人妻一区| 一本久道久久久| 国产91精品入口17c| 中中文字幕av在线| 91麻豆精品国产91久久久使用方法 | 五月天综合在线| 国产成人午夜视频| 亚洲第一页在线视频| 国产精品xxx| 夜夜嗨av一区二区三区免费区| 日产精品久久久| 91在线观看污| 黄色av网址在线播放| 国产成人高清精品免费5388| 久久艹在线视频| 国产女主播福利| 有坂深雪av一区二区精品| 奇米777在线| 欧美91精品| 91手机在线视频| 中文字幕中文字幕在线十八区| 欧美二区在线观看| 成人免费毛片xxx| 国产成人欧美日韩在线电影| 免费观看亚洲视频| 九九热播视频在线精品6| 亚州国产精品久久久| 亚洲人妻一区二区三区| 黑人精品xxx一区| 一区二区三区免费在线观看视频| 国产亚洲激情| 日韩一二三区不卡在线视频| 免费污视频在线一区| 色妞一区二区三区| 国产精品无码免费播放| 一区二区三区日韩精品| 岛国精品一区二区三区| 日韩午夜精品| 日日骚一区二区网站| 午夜不卡一区| 久久久久久久久久久免费| 色婷婷av一区二区三区之e本道| 欧美日韩中文字幕在线视频| 91麻豆精品国产91久久综合| 精品无人码麻豆乱码1区2区| 精品一区二区三区毛片| 极品尤物一区| 国产精品一区二区性色av| 黄av在线播放| 亚洲精品动漫100p| 97人妻精品视频一区| 亚洲视频在线观看一区| 亚洲av成人片色在线观看高潮 | 精品久久久国产精品999| 日韩乱码人妻无码中文字幕久久| 蜜桃视频一区二区三区在线观看| 老司机午夜网站| 婷婷综合福利| 成人激情视频在线| 岛国av免费在线观看| 伊人伊人伊人久久| 亚洲成a人片在线| 日韩欧美成人精品| 成熟的女同志hd| 91免费看`日韩一区二区| 中文字幕网av| 99热精品在线观看| 夜夜爽99久久国产综合精品女不卡| 97视频一区| 国产精品日韩在线观看| h片在线观看下载| 中文字幕在线日韩 | 激情综合婷婷| 国产mv免费观看入口亚洲| 18+激情视频在线| 亚洲人成在线观看| 韩国av永久免费| 91精品久久久久久久99蜜桃| 区一区二在线观看| 一区二区三区国产精品| 五月婷婷六月香| 91影院在线观看| 国产在线a视频| 美国十次了思思久久精品导航| 日韩五码在线观看| 欧美久久影院| 亚洲一区二区四区| 国产成人精品一区二区免费看京| 成人av蜜桃| 四虎影视精品永久在线观看| 日本中文字幕不卡免费| 1区2区在线| 欧美激情伊人电影| 超碰超碰在线| 色七七影院综合| yjizz视频网站在线播放| 日韩精品视频在线免费观看| 亚洲精品人妻无码| 欧美一级高清大全免费观看| 91免费视频播放| 欧美色图在线观看| 黄色大全在线观看| 色婷婷精品大视频在线蜜桃视频| 国产午夜小视频| 亚洲综合激情另类小说区| 欧美日韩中文字幕在线观看| 中文字幕一区二区三区不卡在线| 成年人在线免费看片| www国产亚洲精品久久麻豆| 欧美熟妇精品一区二区蜜桃视频| 国产精品一区二区久久精品爱涩| 中国黄色片一级| 国产在线国偷精品免费看| 亚洲一区日韩精品| 免费久久精品视频| av网站在线不卡| 麻豆精品一区二区av白丝在线| 少妇高清精品毛片在线视频| 噜噜噜躁狠狠躁狠狠精品视频| 日韩人妻精品无码一区二区三区| 99视频精品免费观看| 激情深爱综合网| 先锋影音久久久| 成人在线看视频| 久久国产日韩| 亚洲一级片免费| 精品一区二区在线免费观看| www.色就是色.com| 国产精品538一区二区在线| wwwxxxx在线观看| 成人污污视频在线观看| www国产视频| 国产午夜亚洲精品午夜鲁丝片| 亚洲欧洲久久久| 国产精品灌醉下药二区| 紧身裙女教师波多野结衣| 一区二区免费在线| 国产成人无码精品亚洲| 欧美综合久久久| 国产一区二区在线播放视频| 日韩精品专区在线影院重磅| 四虎精品一区二区三区| 亚洲一级一级97网| 日本电影在线观看网站| 久久久女女女女999久久| 午夜激情电影在线播放| 国产免费一区二区三区在线能观看| 91精品网站在线观看| 91传媒视频在线观看| 日韩a级大片| 中文精品一区二区三区| 尤物网精品视频| 成年人网站大全| 国产精品亚洲一区二区三区在线 | 国产精品无圣光一区二区| 国产黄在线免费观看| 精品福利在线视频| 亚洲一区二区视频在线播放| 欧美电视剧在线看免费| 国产在线一二三| 欧美激情欧美狂野欧美精品| 亚洲欧洲自拍| 91传媒视频免费| 国产精品视频一区二区三区四蜜臂| 自拍偷拍一区二区三区| 一本久道久久久| 久久综合桃花网| 国产婷婷色一区二区三区在线| 日本a级片视频| 欧美最新大片在线看| 亚洲精品一区二区三区区别| 中国人与牲禽动交精品| 高清在线视频不卡| 成人免费视频在线观看超级碰| 大香伊人久久精品一区二区 | 伊人久久成人| 99国产精品久久久久久| 91免费在线播放| 欧美精品xxxxx| 欧美喷水一区二区| 天堂а√在线8种子蜜桃视频| 欧美成人激情视频免费观看| 3d欧美精品动漫xxxx无尽| 国产欧美日韩伦理| 亚洲理论电影网| 91蝌蚪视频在线观看| 不卡的看片网站| 久久免费播放视频| 欧美精品自拍偷拍动漫精品| 好男人免费精品视频| 久久免费福利视频| 视频精品一区二区三区| 国产又黄又爽免费视频| 看国产成人h片视频| 国产成人精品无码免费看夜聊软件| 亚洲欧美一区二区久久| 影音先锋黄色网址| 一区二区亚洲精品国产| 在线观看爽视频| 精品国产乱码久久久久久108| 欧美99在线视频观看| 国产成人美女视频| 国产女人18水真多18精品一级做| 久久精品无码av| 日韩av影片在线观看| av在线加勒比| 国产精品果冻传媒潘| 国产综合网站| 精品国产一二区| 一区二区三区波多野结衣在线观看| 91亚洲国产成人久久精品麻豆| 日韩精品日韩在线观看| 大胆人体一区二区| 日本婷婷久久久久久久久一区二区| 99精品国产在热久久| 这里只有精品在线观看视频 | 97人妻精品视频一区| 在线电影av不卡网址| 91精品国产66| 亚洲视频电影| 狠狠色狠狠色综合系列| 神马久久精品综合| 欧美一区二区视频在线观看2020| 国产在线激情| 动漫精品视频| 伊人久久亚洲影院| 女人被狂躁c到高潮| 色播五月激情综合网| 国产女人在线观看| 国产男女猛烈无遮挡91| 911久久香蕉国产线看观看| 亚洲 自拍 另类 欧美 丝袜| 亚洲小说欧美激情另类| 天堂在线资源8| 国产成人一区二区三区| 欧美肉体xxxx裸体137大胆| 不用播放器的免费av| 一区二区高清在线| 亚洲欧洲精品视频| 国产精品日韩在线观看| 欧美高清不卡| 无码人妻aⅴ一区二区三区| 欧美中文字幕一区| www免费视频观看在线| 国产精品一级久久久| 久久久久网站| 男的操女的网站| 日韩av最新在线观看| 日韩免费小视频| 女人床在线观看| 久久精品视频在线免费观看 | 精品一区二区成人精品| 久草资源在线视频| 亚洲欧美一区二区激情| 亚洲伦理一区二区| 亚洲人成无码网站久久99热国产 | 亚洲成年网站在线观看| 国产高清不卡| 超碰成人在线免费观看| av电影天堂一区二区在线观看| 亚洲综合成人av| 国内精品视频一区| 日本激情一区| 在线免费观看污视频| 制服丝袜亚洲网站| 在线播放高清视频www|