1. 程式人生 > 實用技巧 >1248. 統計「優美子陣列」

1248. 統計「優美子陣列」

給你一個整數陣列nums 和一個整數 k。

如果某個 連續 子陣列中恰好有 k 個奇數數字,我們就認為這個子陣列是「優美子陣列」。

請返回這個陣列中「優美子陣列」的數目。

示例 1:

輸入:nums = [1,1,2,1,1], k = 3
輸出:2
解釋:包含 3 個奇數的子陣列是 [1,1,2,1] 和 [1,2,1,1] 。
示例 2:

輸入:nums = [2,4,6], k = 1
輸出:0
解釋:數列中不包含任何奇數,所以不存在優美子陣列。
示例 3:

輸入:nums = [2,2,2,1,2,2,1,2,2,2], k = 2
輸出:16

提示:

1 <= nums.length <= 50000
1 <= nums[i] <= 10^5
1 <= k <= nums.length

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/count-number-of-nice-subarrays
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

from itertools import combinations
class Solution:
    def numberOfSubarrays(self, nums: List[int], k: int) -> int:
        n=len(nums)
        if k>n:return 0
        a=[0]*(n+2)
        a[0]
=1 res=sum=0 for i in nums: if i%2==1: sum+=1 a[sum]+=1 if sum>=k: res+=a[sum-k] return res