classSolution{public:longlongcountAlternatingSubarrays(vector<int>&nums){// dp[i] := the number of alternating subarrays ending in index ivector<long>dp(nums.size(),1);for(inti=1;i<nums.size();++i)if(nums[i]!=nums[i-1])dp[i]+=dp[i-1];returnaccumulate(dp.begin(),dp.end(),0L);}};
1 2 3 4 5 6 7 8 910111213
classSolution{publiclongcountAlternatingSubarrays(int[]nums){// dp[i] := the number of alternating subarrays ending in index ilong[]dp=newlong[nums.length];Arrays.fill(dp,1);for(inti=1;i<nums.length;++i)if(nums[i]!=nums[i-1])dp[i]+=dp[i-1];returnArrays.stream(dp).sum();}}
1 2 3 4 5 6 7 8 910
classSolution:defcountAlternatingSubarrays(self,nums:list[int])->int:# dp[i] := the number of alternating subarrays ending in index idp=[1]*len(nums)foriinrange(1,len(nums)):ifnums[i]!=nums[i-1]:dp[i]+=dp[i-1]returnsum(dp)