当前位置: 首页 > 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.lryc.cn/news/464720.html

相关文章:

  • 浅谈微前端【qiankun】的应用
  • 【JavaEE】——四次挥手,TCP状态转换,滑动窗口,流量控制
  • D42【python 接口自动化学习】- python基础之函数
  • GitLab 老旧版本如何升级?
  • 现今 CSS3 最强二维布局系统 Grid 网格布局
  • 【图解版】力扣第146题:LRU缓存
  • 数据库知识点整理
  • 【JVM】内存模型
  • 代码随想录:二叉树的四种遍历
  • 【Linux】从多线程同步到生产者消费者模型:多线程编程实践
  • 如何在word里面给文字加拼音?
  • Detr论文精读
  • 找寻孤独伤感视频素材的热门资源网站推荐
  • 大模型~合集13
  • 【Next.js 项目实战系列】04-修改 Issue
  • 【Linux】并行与并发(含时间片)
  • 【Flutter】页面布局:弹性布局(Flex)
  • 深入解析 Go 语言接口:多接口实现与接口组合的实际应用
  • Eclipse——Java开发详解
  • 练手小项目推荐
  • 一图秒懂色彩空间和色彩模型
  • 控制Stable Diffusion生成质量的多种方法
  • 递归算法笔记
  • Android——发送彩信
  • 对比迁移项目的改动
  • 数据结构-复杂度
  • 无人机之放电速率篇
  • 免费开源AI助手,颠覆你的数字生活体验
  • VMware虚拟机三种网络模式详解
  • 【算法篇】动态规划类(4)——子序列(笔记)