diff --git a/go/count-number-of-nice-subarrays.go b/go/count-number-of-nice-subarrays.go new file mode 100644 index 0000000..4f9d227 --- /dev/null +++ b/go/count-number-of-nice-subarrays.go @@ -0,0 +1,23 @@ +package main + +func numberOfSubarrays(nums []int, k int) int { + atMost := func(k int) int { + subarrays := 0 + + window, start := 0, 0 + for end := range nums { + window += nums[end] % 2 + + for window > k { + window -= nums[start] % 2 + start++ + } + + subarrays += end - start + 1 + } + + return subarrays + } + + return atMost(k) - atMost(k-1) +}