1248. Count Number of Nice Subarrays
Medium
Given an array of integers nums
and an integer k
. A continuous 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 = 3
- Output: 2
- Explanation: 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 = 1
- Output: 0
- Explanation: There are no odd numbers in the array.
Example 3:
- Input: nums = [2,2,2,1,2,2,1,2,2,2], k = 2
- Output: 16
Solution:
1 <= nums.length <= 50000
1 <= nums[i] <= 10^5
1 <= k <= nums.length
Constraints:
class Solution {
/**
* @param Integer[] $nums
* @param Integer $k
* @return Integer
*/
function numberOfSubarrays($nums, $k) {
$r = array(0, 0);
$res = 0;
$pre = 0;
$cur = 0;
for($i = 0; $i < count($nums); $i++){
$r[$nums[$i] & 1]++;
if($r[1] == $k){
$pre = $cur;
}
while($r[1] == $k){
$r[$nums[$cur] & 1]--;
$cur++;
}
$res += $cur - $pre;
}
return $res;
}
}
Contact Links
If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks 馃槏. Your support would mean a lot to me!
If you want more helpful content like this, feel free to follow me: