LeetCode 题解系列(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
解法一: 前缀和+差分
- 前缀和代表的是当前位置 i 上[0..i]奇数个数子数组的个数。
- 每个位置能得到当前 0-i 的奇数个数 n,然后 找 n-k 的个数相加就是结果的个数。
时间复杂度: O(N); 辅助空间复杂度: O(N)
1 |
|
LeetCode 题解系列(1248):统计「优美子数组」
http://example.com/2020/07/11/D-DataStructureAndAlgorithm/D-LeetCode/1248-YouMeiZiArray/