Variation of the longest increasing subsequence algorithm
This problem requires a solution similar to the longest increasing subsequence one. Basically on each step you either reset the current streak or increments it, adding the value to the return value. Code is down below, cheers, ACC.
3101. 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 either0
or1
.
Accepted
26,802
Submissions
47,966
public long CountAlternatingSubarrays(int[] nums) { long retVal = 0; int currentStreak = 0; for (int i = 0; i < nums.Length; i++) { currentStreak = (i == 0 || nums[i] == nums[i - 1]) ? 1 : currentStreak + 1; retVal += currentStreak; } return retVal; }
Comments
Post a Comment