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

在做题中学习(43):长度最小的子数组

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

解法:同向双指针-------滑动窗口算法

解释:本是暴力枚举做法,因为全部是正整数,就可以利用单调性和双指针解决问题来节省时间

思路:

如上面图,right指针走到此处,sum > 7,长度为4,因为都是正整数,right再向后走仍然会 > 7,len也会变大,而题目要求符合条件最小的len,因此此时right不必动了,让left向后走,sum会缩小,因此让right又得向后走,直到走完整个数组,最后的len就是最小的子数组长度。

滑动窗口就是因为left  right 最后都会向后走,俩指针之间的部分(窗口)一直在滑动,因此同向双指针也叫滑动窗口算法。

所以总结下来步骤为:

1.left = 0, right = 0

2.进窗口

3.判断

4.出窗口

细节:len定义时不要为0,因为后续len重新赋值是要在原先和现在的值中选更小值。最后的len需要判断,因为若是遍历完数组一遍,len都没有变化,那就需要返回0.

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

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

相关文章:

  • 如何将 element-ui 中的 el-select 默认展开
  • Typora基本用法
  • 读元宇宙改变一切笔记02_元素(上)
  • 听GPT 讲Rust源代码--compiler(2)
  • SpringCloud系列篇:核心组件之负载均衡组件
  • 多线程模板应用实现(实践学习笔记)
  • Linux系统中MYSQL重置密码(针对root忘记密码)
  • 蓝桥杯基础知识1 字母大小写转换
  • 攀登者1 - 华为OD统一考试
  • 通信原理期末复习——基础小题汇总(二)
  • 代码随想录刷题第四十二天| 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集
  • 前端开发加速器:十个VSCode插件精选
  • 剑指offer面试题3 二维数组中的查找
  • 【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现
  • 力扣383.赎金信 -- 哈希表
  • GeoServer发布地图服务(WMS、WFS)
  • C语言——结构体
  • 基于多反应堆的高并发服务器【C/C++/Reactor】(中)Buffer的创建和销毁、扩容、写入数据
  • 【Linux】常用的基本命令指令①
  • 活动运营常用的ChatGPT通用提示词模板
  • SpringBoot 中实现订单30分钟自动取消的策略
  • 像专家一样使用TypeScript映射类型
  • Golang 结构体
  • 服务器运行状况监控工具
  • 2022年全国职业院校技能大赛软件测试赛题卷②—自动化测试解析报告(含术语)
  • 497 蓝桥杯 成绩分析 简单
  • 一、HTML5简介
  • 视频云存储/视频智能分析平台EasyCVR在麒麟系统中无法启动该如何解决?
  • 前端性能优化之图像优化
  • 微信小程序封装vant 下拉框select 单选组件