当前位置: 首页 > 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)移动左窗口,直至不满足条件。移动的过程中,只要移动一次仍然满足条件,则找到了一个满足条件的窗口,更新结果。

http://www.xdnf.cn/news/202141.html

相关文章:

  • 【基础知识】常见的计算公式(一)
  • java借助NIO、链表、跳表模拟实现redis
  • CDGP|如何建立高效的数据治理团队?
  • 【强化学习系列】贝尔曼方程
  • mysql模糊多次OR查询某一个字段,针对这个字段进行查询分组
  • Marin说PCB之----板材的替换注意事项
  • vite创建vue3项目并进行配置
  • DIFY教程第三弹:构建一个智能生成图片的Agent
  • 【分布式系统中的“瑞士军刀”_ Zookeeper】三、Zookeeper 在实际项目中的应用场景与案例分析
  • openGauss DB4AI与scikit-learn模块对比探究
  • 基于强化学习的用于非刚性图像配准的引导式超声采集|文献速递-深度学习医疗AI最新文献
  • HTML标记语言_@拉钩教育【笔记】
  • 座舱系统香氛模块概念
  • 【Linux】第十一章 管理网络
  • COMEM光纤温度传感器Optocon:可靠稳定的温度监测方案
  • 2025三掌柜赠书活动第十五期:高并发系统:设计原理与实践
  • 跨语言哈希一致性:C# 与 Java 的 MD5 之战?
  • PHP经验笔记
  • 大模型相关问题解答
  • 记一次奇妙的Oracle注入绕WAF之旅
  • vue-router: vue3路由管理器
  • 新时代下的存储过程开发实践与优化
  • AI大模型入门指南——概念篇
  • 语音合成之九注意力机制在TTS中的应用:让模型“听懂”文本
  • 从零开始学AI教程 初学者入门指南
  • 推荐私有化部署的企业内部通讯软件BeeWorks
  • 如何解决 Linux 文件系统挂载失败的问题
  • 在C# WebApi 中使用 Nacos01:基础安装教程和启动运行
  • 金融业数字化转型——深入解读77页2024年中国金融体系指标大全【附全文阅读】
  • 机器学习框架全景解析:优势、局限与行业实践