LeetCode-1248. Count Number of Nice Subarrays

网友投稿 233 2022-11-29

LeetCode-1248. Count Number of Nice Subarrays

Given an array of integers ​​nums​​​ and an integer ​​k​​. A subarray is called nice if there are ​​k​​ odd numbers on it.

Return the number of nice sub-arrays.

Example 1:

Input: nums = [1,1,2,1,1], k = 3Output: 2Explanation: The only sub-arrays with 3 odd numbers are [1,1,2,1] and [1,2,1,1].

Example 2:

Input: nums = [2,4,6], k = 1Output: 0Explanation: There is no odd numbers in the array.

Example 3:

Input: nums = [2,2,2,1,2,2,1,2,2,2], k = 2Output: 16

Constraints:

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

​​题解:​​

​​存储每个奇数出现的位置,然后计算每k个奇数的左右非奇数个数,相乘即可。​​

class Solution {public: int numberOfSubarrays(vector& nums, int k) { int n = nums.size(); int res = 0; vector odd; for (int i = 0; i < n; i++) { if (nums[i] & 1 == 1) { odd.push_back(i); } } if (odd.size() == 0 || k > odd.size()) { return 0; } for (int i = 0; i < odd.size() - k + 1; i++) { int left = 0, right = 0; if (i == 0) { left = odd[i] + 1; } else { left = odd[i] - odd[i - 1]; } if (i + k < odd.size()) { right = odd[i + k] - odd[i + k - 1]; } else { right = n - odd[i + k - 1]; } res += left * right; } return res; }};

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot restTemplate连接池整合方式
下一篇:LeetCode-1305. All Elements in Two Binary Search Trees
相关文章

 发表评论

暂时没有评论,来抢沙发吧~