<jupyter_start><jupyter_text>说明：    给你一个整数数组 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、1 <= nums.length <= 50000    2、1 <= nums[i] <= 10^5    3、1 <= k <= nums.length<jupyter_code>from collections import defaultdict

class Solution:
    def numberOfSubarrays(self, nums, k: int) -> int:
        count = 0
        odd_prefix = defaultdict(int)
        odd_prefix[0] = 1
        cur_odd_count = 0
        for n in nums:
            if n % 2 == 1:
                cur_odd_count += 1
            if cur_odd_count - k in odd_prefix:
                count += odd_prefix[cur_odd_count - k]
            odd_prefix[cur_odd_count] += 1
        return count
solution = Solution()
solution.numberOfSubarrays(nums = [2,2,2,1,2,2,1,2,2,2], k = 2)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.145224171539961, 'fraction_numerical': 0.0682261208576998, 'mean_word_length': 2.5536332179930796, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 6, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '225527', 'license': 'Apache-2.0', 'n_tokens_mistral': 531, 'n_tokens_neox': 526, 'n_words': 93, 'path': 'Two Pointer/1018/1248. Count Number of Nice Subarrays.ipynb', 'repo_name': 'YuHe0108/Leetcode', 'size': '1026'}