算法通关村第16关【青铜】| 滑动窗口思想

1. 滑动窗口的基本思想

一句话概括就是两个快慢指针维护的一个会移动的区间

固定大小窗口:求哪个窗口元素最大、最小、平均值、和最大、和最小

可变大小窗口:求一个序列里最大、最小窗口是什么

2. 两个入门题

(1)子数组最大平均数

思路:每次窗口向右滑动一格,大小不变为k,遍历一次数组结果就出来了

java 复制代码
class Solution {
    public double findMaxAverage(int[] nums, int k) {
        int left = 0;
        int right = k-1;
        double sum = 0;
        for(int i = 0;i<k;i++){
            sum += nums[i];
        }
        double res = sum/k;
        while(right<nums.length-1){
            right++;
            left++;
            sum = sum - nums[left-1] + nums[right];
            if(sum/k>res){
                res = sum/k;
            }
        }
        return res;
    }
}

(2)最长连续递增序列

思路:窗口是递增的序列,当符合递增条件时窗口扩大,当不符合递增窗口重置为当前right位置,用一个变量来记录最长的递增子序列长度(窗口长度)

java 复制代码
class Solution {
    public int findLengthOfLCIS(int[] nums) {
        if(nums.length == 1){
            return 1;
        }
        int left = 0;
        int right = 0;
        int count = 1;
        int res = 1;
        while(right<nums.length-1){
            if(nums[right+1]>nums[right]){
                count++;
                right++;
            }else{
                res = res<count ? count : res;
                count = 1;
                right++;
                left = right;
            }
        }
        return count > res ? count : res;
    }
}
相关推荐
圣保罗的大教堂21 小时前
leetcode 3867. 数对的最大公约数之和 中等
leetcode
To_OC1 天前
LC 15 三数之和:双指针不难,难的是把去重做对
javascript·算法·leetcode
renhongxia11 天前
世界模型,是“空中楼阁”还是AGI的“最后一块拼图”?
运维·服务器·数据库·人工智能·算法·agi
G.O.G.O.G1 天前
LeetCode SQL 从入门到精通(MySQL)06(上)
数据库·sql·mysql·leetcode
zephyr051 天前
动态规划-最长上升子序列问题
算法·动态规划
闪电悠米1 天前
力扣hot100-56.合并区间-排序详解
数据结构·算法·leetcode·贪心算法·排序算法
卡提西亚1 天前
leetcode-1438. 绝对差不超过限制的最长连续子数组
算法·leetcode·职场和发展
Java面试题总结1 天前
LeetCode 93.复原IP地址
算法·leetcode·职场和发展·.net
从零开始的代码生活_1 天前
C++ 多态详解:虚函数、动态绑定、抽象类与虚表原理
开发语言·c++·后端·学习·算法
Tisfy1 天前
LeetCode 3867.数对的最大公约数之和:按题目说的做(gcd)
算法·leetcode·题解·模拟·最大公约数·gcd