美文网首页
算法:滑动窗口(三)

算法:滑动窗口(三)

作者: 向子柯 | 来源:发表于2021-04-30 10:48 被阅读0次
209. 长度最小的子数组 - 力扣(LeetCode) (leetcode-cn.com)

给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0
输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。

滑动窗口

/**
 * @param {number} target
 * @param {number[]} nums
 * @return {number}
 */
var minSubArrayLen = function(target, nums) {
    let l = 0, r = -1
    let sum = 0;
    let res = nums.length + 1 // 最小连续子数组的长度
    while(l < nums.length) {
        if(r + 1 < nums.length && sum < target){
            r++;
            sum += nums[r]
        } else {
            sum -= nums[l];
            l++
        }
        if(sum >= target) {
            res = Math.min(res, r - l +1)
        }
    }
    if(res === nums.length + 1) {
        return 0
    }
    return res
};
3. 无重复字符的最长子串 - 力扣(LeetCode) (leetcode-cn.com)

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

思路:滑动窗口

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s){
    let l = 0; // 左指针为0
    let res = 0; // 最大窗口的长度
    for(let r = 0; r < s.length; r++) { // 右指针
       if(map.has(s[r]) && map.get(s[r]) >= l) {
            l = map.get(s[r]) + 1
       }
       res = Math.max(res, r - l + 1); // 窗口长度的最大值
       map.set(s[r], r)
    }
    return res;
}

相关文章

  • Algorithm进阶计划 -- 滑动窗口

    滑动窗口算法滑动窗口框架滑动窗口运用 1. 滑动窗口框架 滑动窗口算法,核心思路是维护一个窗口,不断滑动,然后更新...

  • 算法:滑动窗口(三)

    209. 长度最小的子数组 - 力扣(LeetCode) (leetcode-cn.com)[https://le...

  • 3. 无重复字符的最长子串

    主要用到了滑动窗口算法两个指针之间就代表是一个滑动窗口,滑动窗口必须保证没有重复元素,同时保留最大的滑动窗口的大小...

  • Yolo知识整理,摘自网络

    Yolo 基本原理 滑动窗口与CNN 在介绍Yolo算法之前,首先先介绍一下滑动窗口技术,这对我们理解Yolo算法...

  • 限流框架系列之常见限流算法

    四种常见的限流算法 固定时间窗口限流算法 滑动时间窗口限流算法 令牌桶限流算法 漏桶限流算法 算法比较 算法确定参...

  • viola jones人脸检测原理

    Viola-jones人脸检测算法是一种基于滑动窗口的目标检测算法,但它却克服了滑动窗口检测带来的低效问题,可以用...

  • 你知道常见的限流算法有哪些吗?

    我们常见的限流算法有四种:计数器(固定窗口)算法、滑动窗口算法、漏桶算法、令牌桶算法。 为什么要限流 资源是有限的...

  • 滑动窗口算法

    给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}...

  • 算法之滑动窗口

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

  • 滑动窗口算法

    一、滑动窗口算法 也会使用两个指针,但和双指针算法不同的是双指针算法关注的往往是两个指针正在指向的两个元素,而滑动...

网友评论

      本文标题:算法:滑动窗口(三)

      本文链接:https://www.haomeiwen.com/subject/svbwrltx.html