Skip to content

3374. Count Alternating Subarrays

Array Math

Problem - Count Alternating Subarrays

Medium

You are given a binary array nums.

We call a subarray alternating if no two adjacent elements in the subarray have the same value.

Return the number of alternating subarrays in nums.

 

Example 1:

Input: nums = [0,1,1,1]

Output: 5

Explanation:

The following subarrays are alternating: [0], [1], [1], [1], and [0,1].

Example 2:

Input: nums = [1,0,1,0]

Output: 10

Explanation:

Every subarray of the array is alternating. There are 10 possible subarrays that we can choose.

 

Constraints:

  • 1 <= nums.length <= 105
  • nums[i] is either 0 or 1.

Solutions

1
2
3
4
5
6
7
8
9
class Solution:
    def countAlternatingSubarrays(self, nums: List[int]) -> int:
        result = 1
        sum_val = 1
        for val1, val2 in pairwise(nums):
            sum_val = sum_val + 1 if val1 != val2 else 1
            result += sum_val

        return result

Submission Stats:

  • Runtime: 54 ms (63.14%)
  • Memory: 21.4 MB (99.40%)