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

【力扣打卡系列】滑动窗口与双指针(乘积小于K的子数组)

坚持按题型打卡&刷&梳理力扣算法题系列,语言为go,Day6

乘积小于K的子数组
  • 题目描述在这里插入图片描述
  • 解题思路
    • 双指针移动,遍历右端点right,滑动左端点left
    • 子数组的个数:固定右端点r,子数组的个数其实就是从l到r的元素的个数,即r-l+1
    • 反向控制条件for sum >= k{},当sum<k,即满足操作时,执行ans += right-left +1
  • 代码参考
func numSubarrayProductLessThanK(nums []int, k int) int {left := 0sum := 1ans := 0if k <= 1 {return 0}for right,value :=range nums{sum *= valuefor sum >= k{sum /= nums[left]left++}ans += right-left +1}return ans
}
  • tips
    • 双指针的应用场景
    • 指针移动的过程中,sum和是在不断变小的,while条件逐渐从满足要求变为不满足要求,这就是单调性,只有满足单调性才可以使用双指针
    • 子数组的个数:固定右端点r,子数组的个数其实就是从l到r的元素的个数,即r-l+1
    • 即[l,r]满足要求的话,[l,r],[l+1,r]…[r,r]都是满足要求的(固定右端点)

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

相关文章:

  • ScrollView 真机微信小程序无法隐藏滚动条
  • Imagic: Text-Based Real Image Editing with Diffusion Models
  • <项目代码>YOLOv8路面病害识别<目标检测>
  • 深度学习 简易环境安装(不含Anaconda)
  • 【CS常见问题】你用的是VS2019,最高支持.NET5.0,但是项目将.NET6.0设为目标无法运行,怎么办?
  • arc浏览器一些功能技巧
  • 动态规划-子数组系列——乘积最大子数组
  • 文心一言 VS 讯飞星火 VS chatgpt (373)-- 算法导论24.4 5题
  • SpringBoot3整合RocketMQ问题处理
  • Qt 实战(11)样式表 | 11.2、使用样式表
  • 单元化架构,分布式系统的新王!
  • Java学习教程,从入门到精通, Java 基础语法(4)
  • VMware虚拟机三种网络模式详解
  • 【计网笔记】以太网
  • 深度学习-2:数据向量化
  • python 函数式编程
  • 死锁的具体案例分析
  • 集合框架14:TreeSet概述、TreeSet使用、Comparator接口及举例
  • 基于深度学习的地形分类与变化检测
  • 快速学会一个算法:Faster R-CNN进行目标检测!
  • leetcode day1
  • resnetv1骨干
  • 轮班管理新策略,提高效率与降低员工抱怨
  • Vue3中使用自定义指令实现后台管理系统中对于按钮权限的控制
  • 五年三次冲刺IPO失败,企业业绩成长性恐不足,三年分红约1.5亿元
  • 对比迁移项目的改动