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

Leetcode-​713. 乘积小于 K 的子数组​

Problem: 713. 乘积小于 K 的子数组

思路

滑动窗口

解题过程

维护一个窗口[l,r],代表以r为右端点的满足元素乘积小于k的最长子数组。此时数组长度就是以r为右端点的满足条件的子数组个数。

mul记录窗口内容所有元素的乘积。当窗口右移的时候,更新乘积。如果乘积大于等于k,需要左移窗口来缩小乘积。

Code

c++

class Solution {
public:int numSubarrayProductLessThanK(vector<int>& nums, int k) {int n = nums.size();int l = 0;int ans = 0;long long mul = 1;for (int r = 0; r < n; r++) {mul *= nums[r];while (mul >= k && l <= r) {mul /= nums[l];l++;}ans += r - l + 1;}return ans;}
};

python

class Solution:def numSubarrayProductLessThanK(self, nums: List[int], k: int) -> int:n = len(nums)l = ans = 0mul = 1for r, x in enumerate(nums):mul *= xwhile mul >= k and l <= r:mul /= nums[l]l += 1ans += r - l + 1return ans

复杂度

  • 时间复杂度: O(n)
  • 空间复杂度: O(1)
    http://www.dtcms.com/a/252788.html

    相关文章:

  • 45-Oracle 索引的新建与重建
  • phpstorm无缝切换vscode
  • Synopsys:Verification Continuum Platform介绍
  • python追加合并excel效率记录
  • 从C++编程入手设计模式——外观模式
  • C/C++中的位段(Bit-field)是什么?
  • [特殊字符]华为总部参观预约|企业通道揭秘
  • 《OpenAI Whisper模型深度研究报告:技术、应用与展望》
  • [驱动开发篇] SPI 驱动开发 - 原理解析篇
  • Vue-7-前端框架Vue之应用基础从Vue2语法到Vue3语法的演变
  • 神经体积记忆架构(NVM)-实现机械狗自主爬楼梯、跨缝隙、翻障碍
  • 《Whisper:OpenAI的先进语音识别模型》
  • Hadoop 版本进化论:从 1.0 到 2.0,架构革命全解析
  • 【Docker 07】Network - 网络
  • 博图SCL中WHILE语句的使用详解及案例
  • 探索KingbaseES在线体验平台:国产数据库新体验
  • 树 与 堆:从 数 据 结 构 基 础 到 算 法 实 践 的 全 面 解 析
  • 未来的随身AI IDC--AI手机
  • nginx 和 springcloud gateway cors 跨域如何设置
  • 深入剖析Spring Cloud Gateway,自定义过滤器+断言组合成拦截器链实现Token认证
  • Arduino入门教程:7、电位器
  • Karate UI自动化测试之定位器
  • Redis使用规范
  • Redis Sentinel 非集群模式高可用部署指南
  • agentformer论文阅读
  • Vue-8-前端框架Vue之应用基础响应式数据和计算属性
  • 数据库系统概论(二十)数据库恢复技术
  • linux防火墙讲解
  • 封号零风险」策略:用亚矩阵云手机解锁Telegram的100%隐匿工作流
  • MacOS15.5 MySQL8 开启 mysql_native_password