LeetCode中等题之乘积小于 K 的子数组

news/2024/11/24 19:14:56/

题目

给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目。
示例 1:
输入:nums = [10,5,2,6], k = 100
输出:8
解释:8 个乘积小于 100 的子数组分别为:[10]、[5]、[2],、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。
需要注意的是 [10,5,2] 并不是乘积小于 100 的子数组。
示例 2:
输入:nums = [1,2,3], k = 0
输出:0
提示:
1 <= nums.length <= 3 * 10^4
1 <= nums[i] <= 1000
0 <= k <= 10^6
来源:力扣(LeetCode)

解题思路

  这是一个非常经典的滑动窗口的题,我们可以枚举窗口的长度从1到len(nums),每种窗口遍历一边数组。

class Solution:def numSubarrayProductLessThanK(self, nums: List[int], k: int) -> int:frame,count,n=1,0,len(nums)while True:flag,s=0,1for i in range(n-frame+1):if i==0:for j in range(i,i+frame):s*=nums[j]else:s//=nums[i-1]s*=nums[i+frame-1]if s<k:count+=1flag=1frame+=1if not flag:breakreturn count

在这里插入图片描述
  这样做的缺点是显而易见的,每次回到开始重新计算乘积将会有大量的重复计算,所以需要改变思路,滑动的窗口不能是一层不变的,需要在遍历数组的过程中像蠕虫一样自由伸缩,向前移动。

class Solution:def numSubarrayProductLessThanK(self, nums: List[int], k: int) -> int:s,count,j=1,0,0for i in range(len(nums)):s*=nums[i]while j<=i and k<=s:  #不满足条件则从开头删掉元素s//=nums[j]j+=1count+=i-j+1return count

在这里插入图片描述


http://www.ppmy.cn/news/605365.html

相关文章

路遥知马力——Momentum动量梯度

NAG:在滑板下降过程中 也就是速度加快的时候 增大水平方向的力(累计的动量方向) 而在上升的过程中 也就是速度下降的时候 减少垂直方向的力&#xff08;当前的梯度方向&#xff09; 两种情况下 的最终结果 都是加大了往最优点方向的值 加速了 接近最优点的速度 本文收录在无痛的…

带你十分钟快速入门画图绘图作图神器 Matplotlib_各种画图小结

20220612 excel也可以画图 20220525 U-net架构(例如最低分辨率为32x32像素)。每个蓝框对应一个多通道特征图。通道的数量在方框的顶部表示。x-y尺寸在盒子的左下边缘。白盒代表复制的特征映射。箭头表示不同的操作 神经网络简单清晰的画法 The network architecture is illu…

LeetCode简单题之矩形重叠

题目 矩形以列表 [x1, y1, x2, y2] 的形式表示&#xff0c;其中 (x1, y1) 为左下角的坐标&#xff0c;(x2, y2) 是右上角的坐标。矩形的上下边平行于 x 轴&#xff0c;左右边平行于 y 轴。 如果相交的面积为 正 &#xff0c;则称两矩形重叠。需要明确的是&#xff0c;只在角或…

从入门到精通:Vuex使用教程,让你更好地管理应用程序状态!

目录 前言 1. 安装和配置Vuex 2. State 3. Mutations 4. Getters 5. Actions 6. Modules 7. 总结 前言 Vuex是Vue.js的一个状态管理库&#xff0c;它可以帮助我们更好地管理应用程序的状态。在Vue.js中&#xff0c;组件之间的通信往往需要借助于props和emit来完成&…

LeetCode简单题之统计平方和三元组的数目

题目 一个 平方和三元组 (a,b,c) 指的是满足 a2 b2 c2 的 整数 三元组 a&#xff0c;b 和 c 。 给你一个整数 n &#xff0c;请你返回满足 1 < a, b, c < n 的 平方和三元组 的数目。 示例 1&#xff1a; 输入&#xff1a;n 5 输出&#xff1a;2 解释&#xff1a;平方…

Python中正则表达式用法 重点格式以这个为准_首看_各种问题

20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反&#xff0c;它尽可能少的匹配字符以满足正则表达式即可&#xff0c;例如: var str"axxyyzbdkb"; console.log(str.match(/a.*b/));以上代码是贪婪模式&#xff0…

LeetCode简单题之判断根结点是否等于子结点之和

题目 给你一个 二叉树 的根结点 root&#xff0c;该二叉树由恰好 3 个结点组成&#xff1a;根结点、左子结点和右子结点。 如果根结点值等于两个子结点值之和&#xff0c;返回 true &#xff0c;否则返回 false 。 示例 1&#xff1a; 输入&#xff1a;root [10,4,6] 输出…

关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化

20220121 z-score标准化 模型存储和load再调用其实没有关系 再load计算的时候&#xff0c;也是以实际的数据重新计算 并不是以save模型的边界来计算的 20211227 onehot训练集保存的模型再预测集中缺失的部分并不会自动补全 20210529 MinMaxScaler() https://www.cnblogs.c…