zoukankan      html  css  js  c++  java
  • LeetCode滑动窗口专题(刷题记录)

    一、滑动窗口伪代码
    二、滑动窗口经典题目
    01.643. 子数组最大平均数 I
    02.209. 长度最小的子数组
    03.3. 无重复字符的最长子串
    04.76. 最小覆盖子串(难)
    05.485. 最大连续 1 的个数
    06.487. 最大连续1的个数 II
    07.1004. 最大连续1的个数 III
    08.1151. 最少交换次数来组合所有的 1
    09.30. 串联所有单词的子串(难)
    10.567. 字符串的排列
    11.763. 划分字母区间
    12.845. 数组中的最长山脉(难)
    13.159. 至多包含两个不同字符的最长子串
    14.187. 重复的DNA序列
    15.340. 至多包含 K 个不同字符的最长子串
    16.424. 替换后的最长重复字符
    17.713. 乘积小于K的子数组
    18.904. 水果成篮
    19.1100. 长度为 K 的无重复字符子串
    20.1176. 健身计划评估
    21.1208. 尽可能使字符串相等
    22.1234. 替换子串得到平衡字符串
    总结

    模板:

    int left = 0 , right = 0;
    while(right < nums.length()){
    	//处理right指向的元素,加入到窗口
    	while(窗口满足条件){//也有可能是if来判断一次即可
    		//计算结果
    		//处理left指向的元素,将其从窗口中剔除掉
    		left++;
    	}
    	
    	right++;
    }
    

    01.643. 子数组最大平均数 I

    //时间:o(n)
    //空间:o(n)
    class Solution {
        public double findMaxAverage(int[] nums, int k) {
            //窗口左边界   
            int left = 0;
            //窗口右边界
            int right = 0;
            //大小为k的窗口的累加和(动态变化的)
            int currWindowSum = 0;
            //维护最大值
            int maxSum = Integer.MIN_VALUE;
            //右边界
            while(right < nums.length){
                //处理右边的指针
                currWindowSum += nums[right];
                //满足窗口的条件,达到了固定窗口的大小,处理左边的指针
                if(right - left + 1 == k){
                    maxSum = Math.max(maxSum,currWindowSum);
                    //currWindowSum要先减掉num[left],然后left右移
                    currWindowSum -= nums[left++];
                }
                //如果没有达到窗口的大小:只有right右移
                //如果达到窗口的大小了:left和right一起右移一个单位
                right++;
            }
            
            //注意返回类型是 double
            return (double)maxSum / k;
        }
    }
    

      

    加油啦!加油鸭,冲鸭!!!
  • 相关阅读:
    Vue 消息无缝滚动
    请求不携带cookie问题
    vue中添加favicon
    自定义表单-校验数据规则
    vue 刷新当前页面的方式
    读阮一峰《ECMAScript 6 入门》小结
    Java进阶知识点3:更优雅地关闭资源
    Java进阶知识点2:看不懂的代码
    用Java实现异构数据库的高效通用分页查询功能
    Java进阶知识点1:白捡的扩展性
  • 原文地址:https://www.cnblogs.com/clarencezzh/p/15505816.html
Copyright © 2011-2022 走看看