当前位置:网站首页>【leetcode】剑指 Offer II 009. 乘积小于 K 的子数组(滑动窗口、双指针)
【leetcode】剑指 Offer II 009. 乘积小于 K 的子数组(滑动窗口、双指针)
2022-08-03 19:24:00 【friedrichor】
剑指 Offer II 009. 乘积小于 K 的子数组
给定一个正整数数组 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 < = n u m s . l e n g t h < = 3 ∗ 1 0 4 1 <= nums.length <= 3 * 10^4 1<=nums.length<=3∗104
- 1 < = n u m s [ i ] < = 1000 1 <= nums[i] <= 1000 1<=nums[i]<=1000
- 0 < = k < = 1 0 6 0 <= k <= 10^6 0<=k<=106
题解
这题和 【leetcode】剑指 Offer II 008. 和大于等于 target 的最短子数组(滑动窗口,双指针) 比较相似。
滑动窗口枚举
不出意外,这个又超时了
class Solution:
def numSubarrayProductLessThanK(self, nums: List[int], k: int) -> int:
def multiply(num_list): # 累乘
res = 1
for num in num_list:
res *= num
return res
num = 0
for size in range(1, len(nums) + 1):
for i in range(len(nums) + 1 - size):
sum_window = multiply(nums[i: i + size])
if sum_window < k:
num += 1
return num
双指针
class Solution:
def numSubarrayProductLessThanK(self, nums: List[int], k: int) -> int:
length = len(nums)
num = 0
left = 0
sum = 1
for right, value in enumerate(nums):
sum *= value
while sum >= k and left <= right:
sum /= nums[left]
left += 1
num += right - left + 1
return num
以 nums = [10,5,2,6], k = 100 为例:
right = 0
[10] 5 2 6 sum < k num += 0-0+1 = 1 [10]
right = 1
[10 5] 2 6 sum < k num += 1-0+1 = 2 [5] [10 5]
right = 2
[10 5 2] 6 sum = k
10 [5 2] 6 sum < k num += 2-1+1 = 2 [2] [5 2]
right = 3
10 [5 2 6] sum < k num += 3-1+1 = 3 [6] [2 6] [5 2 6]

边栏推荐
- Unity获取canvas 下ui 在屏幕中的实际坐标
- Matlab论文插图绘制模板第42期—气泡矩阵图(相关系数矩阵图)
- 设备树基本原理与操作方法
- OneNote 教程,如何在 OneNote 中设置页面格式?
- 钱江摩托某型号产品ECU货不对版 消费者知情权应如何保障?
- 【C语言学习笔记(七)】C语言重定向输入与输出
- 读取 resources 目录下的文件路径的九种方式,你知道多少?
- LOL英雄联盟卡顿掉帧问题解决办法 2022年8月1日
- ECCV2022 | 用于视频问题回答的视频图Transformer
- net-snmp编译报错:/usr/bin/ld: cannot find crti.o: No such file or directory
猜你喜欢
随机推荐
Redis 内存满了怎么办?这样置才正确!
go语言实现导出string字符串到文件中
CentOS 7 安装mysql
MYSQL误删数据恢复
ADS 2023 Download Link
从文本匹配到语义相关——新闻相似度计算的一般思路
系统太多,多账号互通如何实现?
epoll + 线程池 + 前后置服务器分离
【QT】入门心法
ERROR: You don‘t have the SNMP perl module installed.
Zhong Hua, senior architect of Ali: China-Taiwan strategic thinking and architecture practice; including internal implementation manual
Postgresql snapshot optimization Globalvis new system analysis (performance greatly enhanced)
Calculation of the array serial number of Likou brush questions (one question per day 7/28)
Postgresql source code (65) analysis of the working principle of the new snapshot system Globalvis
安装radondb mysql遇到问题
群辉查看硬盘存储占用的方式
Reveal how the five operational management level of hundreds of millions of easily flow system
Climbing Stairs (7/30)
net-snmp编译报错:/usr/bin/ld: cannot find crti.o: No such file or directory
MySQL master-slave, 6 minutes you master!








