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

Goland滑动窗口

原题链接:最小滑动窗口

维护一个最小的滑动窗口,需要判断这个窗口的sum值是否大于给定的target,如果不大于则一直往数组右方元素累加至大于或等于target值即可
大于或等于时,则需要得到当前滑动窗口的长度,判断是不是长度最小的滑动窗口,如果是则将该窗口长度赋值给result变量用于返回
如果不是则需要减掉滑动窗口最左侧的元素,代表滑动窗口最左则的元素为i,则i++代表了滑动窗口最左则元素减少。
减小掉了窗口最左则的元素,那么滑动窗口总值sum也要减去元素的值,所以也就是sum -=nums[i]
此时反复判断sum是否还大于target,如果大于或等于则继续重复。如果是小于,则回到外层for循环sum+=nums[j]将滑动窗口往右侧扩容一个元素
直到滑动窗口最右侧元素nums[j]碰到末尾
此时判断result是否是原数组大小,如果是则返回0
如果不是则返回result

代码块:

func minSubArrayLen(target int, nums []int) int {i := 0l := len(nums)sum :=0result := l+1 //在没有最小子数组的情况下滑动窗口等于nums数组的长度大小for j:=0; j<l;j++{sum+=nums[j] //起始综合数  用于判断是否大于targetfor sum >= target{subLength := j-i +1 //最小滑动窗口长度if subLength < result{//如果最小滑动窗口长度小于默认nums数组长度大小result = subLength//此时讲result替换为subLength,更新最小滑动窗口长度}sum -= nums[i]//为了不断探索最小滑动窗口,所以需要减去滑动窗口最右边也就是最大的数组元素i++}}if result == l + 1{//滑动窗口之为数组大小,则代表没有最小子数组return 0}else{return result}
}

http://www.mrgr.cn/news/30524.html

相关文章:

  • Linux安装、Nginx反向代理、负载均衡学习
  • Linux 线程控制
  • 【分立元件】案例:新人加了个TVS管为什么可能导致系统不能正常工作
  • python 绘制 y=x^3 图像
  • 2024年华为杯广东工业大学程序设计竞赛 B.你是银狼(反悔贪心)
  • 我的创作纪念日-20240919
  • 基于三维地籍的全生命周期“一码管地”
  • 八股文-JVM
  • 828华为云征文|华为云Flexus云服务器X实例之openEuler系统部署Docker Compose管理工具Dockge
  • C++:布尔类型,引用,堆区空间
  • 基于224G的超高速以太网端口1.6Tbps 1600G真的来了~
  • 在CentOS上搭建NFS服务器
  • LCR 027
  • 圣多纳释放法,达到内心的平静
  • [2025]医院健康陪诊系统(源码+定制+服务)
  • 第三十五条:使用实例字段代替序号
  • 毕业论文写作会用到的AI软件!一定不能错过的18个网站!(务必收藏)
  • 单细胞代谢组学数据分析利器---SCMeTA
  • JavaDS —— 图
  • 数据结构-3.3.栈的链式存储实现