输入:nums = [2,4,6], k = 1 输出:0 解释:数列中不包含任何奇数,所以不存在优美子数组。
示例 3:
1 2
输入: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
Solution
方法同:[930 和相同的二元子数组]
前缀和
可以将偶数视为 0,奇数视为 1。秒啊:clap:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
classSolution { public: intnumberOfSubarrays(vector<int>& nums, int k){ int n = nums.size(); unordered_map<int, int> umap; int odd_sum = 0, res = 0; for (int num : nums) { umap[odd_sum]++; if (num % 2 == 1) odd_sum++; res += umap[odd_sum - k]; } return res; } };