這一題很是 LeetCode 上面難度中等的題目,題目結構也很容易就可以想到是滑動窗口的題目,滑動窗口的條件判斷很簡單,如果目前的積還小於 k ,那就繼續增大窗口,當目前的積大於 k 時縮小窗口,這些都不是這個問題的重點,這一題最困難的在於滑動窗口後怎麼樣去計算到底有多少個子陣列滿足題目的條件?
也就是下方答案的 L17 ans += fast - slow 這一行為什麼是對的?
classSolution:defnumSubarrayProductLessThanK(self,nums: List[int],k:int)->int:if k <=1:return0 fast =0 slow =0 res =1 ans =0while fast <len(nums): num = nums[fast] fast +=1 res *= numwhile res >= k: num = nums[slow] slow +=1 res //= num ans += fast - slowreturn ans