当前位置: 首页 > news >正文

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

1. 滑动窗口的基本思想

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

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

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

2. 两个入门题

(1)子数组最大平均数

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

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位置,用一个变量来记录最长的递增子序列长度(窗口长度)

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;}
}

http://www.lryc.cn/news/174394.html

相关文章:

  • CentOS安装openjdk和elasticsearch
  • 【新版】系统架构设计师 - 案例分析 - 信息安全
  • 数据库设计(火车订票系统)
  • qemu+docker在服务器上搭建linux内核调试环境
  • Stable Diffusion 参数介绍及用法
  • 打印大对象日志导致GC问题的解决
  • 【Docker】学习笔记
  • 网易云信4K 8K RTC助力远程医疗的技术实践
  • 【排序算法】冒泡排序、插入排序、归并排序、希尔排序、选择排序、堆排序、快速排序
  • Linux学习笔记-应用层篇
  • MySQL数据库的存储引擎
  • Linux-多路转接-epoll
  • Java面试被问了几个简单的问题,却回答的不是很好
  • 概率论几种易混淆的形式
  • PyTorch数据增强后的结果展示
  • 指定程序在哪个GPU上运行
  • Linux CentOS7 vim多文件编辑
  • PAT甲级真题1153: 解码PAT准考证
  • linux信号
  • JavaWeb开发-05-SpringBootWeb请求响应
  • Ubuntu下载
  • Vue 的组件加载顺序和渲染顺序
  • leetcode Top100(17)矩阵置零
  • 论文精读(2)—基于稀疏奖励强化学习的机械臂运动规划算法设计与实现(内含实现机器人控制的方法)
  • 快速安装keepalive
  • nginx实现反向代理实例
  • 使用Freemarker填充模板导出复杂Excel,其实很简单哒!
  • windows环境下安装logstash同步数据,注册系统服务
  • java服务内存说明及配置详解
  • Mybatis-MyBatis的缓存