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

乘积小于K的子数组

在这里插入图片描述

思路

该算法通过滑动窗口来解决问题,核心思想是维护一个窗口,窗口内的元素乘积始终小于给定的 k。具体步骤如下:

1.初始化 left 指针和 cal(窗口内元素的乘积),count 用于记录符合条件的子数组个数。
2.使用 right 指针遍历整个数组,扩展窗口。
3.每次扩展窗口时,将当前 right 指针所指的元素乘到 cal 中。
4.如果窗口内的乘积大于或等于 k,通过移动 left 指针(即缩小窗口)直到窗口内的乘积小于 k。
5.对于每个 right 指针的位置,所有从 left 到 right 的子数组都是合法的,加入到 count 中。

class Solution:def numSubarrayProductLessThanK(self, nums: List[int], k: int) -> int:if k<=1:return 0 #这个一定要加上,因为数组都是正数,小于1的没有if not nums:return 0cal=1count=0left=0for right in range(len(nums)):cal=cal*nums[right] #cal表示当前[left,right]窗口内的乘积while cal>=k:cal=cal//nums[left]left+=1 #不断移动左边界count+=(right-left+1)return count
http://www.dtcms.com/a/331867.html

相关文章:

  • flstudio.exe安装教程|FL Studio怎么下载安装?超简单中文指南
  • 状态管理、网络句柄、功能组和功能组状态的逻辑关系
  • 微服务架构概述
  • 《算法导论》第 24 章 - 单源最短路径
  • stm32项目(28)——基于stm32的环境监测并上传至onenet云平台
  • 手机实时提取SIM卡打电话的信令声音-整体解决方案规划
  • Linux新手上路 | 在Ubuntu上Pluma文本编辑器的安装与基本使用
  • 大模型部署基础设施搭建 - Open WebUI
  • 小知识:for of,for in与forEach
  • Stable Diffusion Models are Secretly Good at Visual In-Context Learning
  • localhost:5501与本机ip:5501不同源
  • 服务器的安全检测和防御技术
  • Video-R1论文解读
  • 【深度学习新浪潮】VGGT论文分析
  • docker 如何下载安装配置使用
  • 数据结构:树(Tree)
  • c++中的Lambda表达式详解
  • Linux 对 YUM 包的管理
  • 20250814荣品RD-RK3588开发板在Rockchip原厂的buildroot【linux-5.10】下让eth0网卡跑iperf2测试网速
  • 机器学习初学
  • Linux 编译过程中遇到 TMPDIR 空间不足的问题
  • FPGA读取AHT20温湿度模块思路及实现,包含遇到的问题(IIC协议)
  • 举例说明环境变量及 PATH 的作用
  • ODE-by-Matlab-01-人口增长模型
  • Java进阶学习之Stream流的基本概念以及使用技巧
  • 不用编程不用组态,实现各种PLC之间数据通讯的网络结构示意图
  • Cookie、Session、Token详解
  • week1-[分支嵌套]公因数
  • P1281 [CERC1998] 书的复制
  • 跨域及解决方案