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 = 1left = 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!
評論