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

滑动窗口模板

209. 长度最小的子数组 - 力扣(LeetCode)

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int left=0,right=0,sum=0,length=INT_MAX;while(right<nums.size()){while(right<nums.size()&&sum<target){sum+=nums[right];right++;}if(sum>target)length=min(length,right-left);while(sum>=target){length=min(length,right-left);sum-=nums[left];left++;}}return length==INT_MAX?0:length;}
};

2302. 统计得分小于 K 的子数组数目 - 力扣(LeetCode)

class Solution {
public:long long countSubarrays(vector<int>& nums, long long k) {long long res = 0, cnt = 0;int n = nums.size(), left = 0, right = 0;while (right < n){while (right < n && cnt < k){if (right > left)cnt /= right - left;cnt += nums[right];cnt *= right - left + 1;right++;}if (cnt >= k)res += n - right + 1;while (cnt >= k){if (right > left)cnt /= right - left;cnt -= nums[left];cnt *= right - left - 1;left++;if(cnt>=k)res += n - right + 1;}}return (long long)n*(n+1)/2-res;}
};

 (1)设置滑动窗口左右窗口初始值均为0,然后右区间开始移动,直至找到满足条件的区间或来到数组末尾。

(2)如果当前区间符合条件,则添加到结果中。对于2302来说,当前区间满足,则后面的区间一定都满足,更新结果。

(3)移动左窗口,直至不满足条件。移动的过程中,只要移动一次仍然满足条件,则找到了一个满足条件的窗口,更新结果。

相关文章:

  • 《系统分析师-第三阶段—总结(六)》
  • Android Studio学习记录1
  • 软件测试全流程与主流测试方法详解:从理论到实战
  • Rabbitmq下载和安装(Windows系统,百度网盘)
  • 云服务器被黑客攻击应急响应与加固指南(上)
  • Swiper 在 Vue 中的使用指南
  • 用Python做有趣的AI项目5:AI 画画机器人(图像风格迁移)
  • Atcoder Help 有关Atcoder 的介绍-1 涨分规则
  • docker安装Canal1.1.5,MySQL5.7踩坑
  • 企业架构之旅(2):解锁TOGAF ADM
  • OpenCV-Python (官方)中文教程(部分一)_Day16
  • MicroPython for ESP32 舵机控制详解
  • 【学习笔记】软件测试流程-测试设计阶段
  • 全地形车市场
  • FPGA-DDS信号发生器
  • watch 监视器
  • 【大语言模型开发】BPE算法(Byte-Pair)
  • 可调用对象(5)-bind函数适配器
  • 卫星互联网安全:机遇、挑战与未来方向
  • vite创建vue3项目并进行配置
  • 石家庄:城市更新,生活向美
  • 俄罗斯总统普京:5月8日零时至11日零时实施停火
  • 合肥一季度GDP为3003.88亿元,同比增长6.6%
  • 新加坡选情渐热:播客、短视频各显神通,总理反对身份政治
  • 马上评丨发钱奖励结婚,支持婚育就该系统性发力
  • 宜家上海徐汇商场明天恢复营业,改造后有啥新变化?