DEV Community

Cover image for 1248. Count Number of Nice Subarrays
MD ARIFUL HAQUE
MD ARIFUL HAQUE

Posted on • Edited on

1248. Count Number of Nice Subarrays

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;
    }
}
Enter fullscreen mode Exit fullscreen mode

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:

Top comments (0)