713. Subarray Product Less Than K
題目網址:https://leetcode.cn/problems/subarray-product-less-than-k/
題意:給一整數 array
nums
和一整數k
, 返回所有 subarray 中所有乘積小於k
的連續 subarray 個數。
Solution:
想法:利用 Two Pointers + Sliding Window
- 用
prod
紀錄left ~ right
之連續數乘積- 若
prod > k
: 則prod /= nums[left]
, 且 left 要不斷右移, 直到 prod < k- 新增的連續 subarray 總共有
right - left + 1
個(以 right 為結尾的連續 subarray)
e.g.nums = [10, 5, 2, 6]
,k = 100
left = 0 = right
, 取10 < 100
➔res = 1
left = 0
,right = 1
, 取10 * 5 < 100
➔res = 1 + 2 = 3
因為除了原本的[10]
之外新增了[5], [10, 5]
這兩個以5
為結尾的連續 subarray
class Solution { |
- time:$O(n)$ ➔ for loop
- space:$O(1)$ ➔ 撇除要返回的
res
, 只需常數空間
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論