DEV Community

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

Posted 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

Top comments (0)