交替子数组
从最右端的元素开始往前计算,第一个是只能算一个,从第二个开始,和前一个不同的话,就能增加n+1种不同的数据
本质就是观察以最后端和前一个元素是否相同来决定数量的题目,感觉有一种迭代味道?
一个是ans=1,相同的话也就只会增加一个单独元素的子数组
从第二个开始如果不同就可以增加ans+1个不同的数组
class Solution {
public:
long long countAlternatingSubarrays(vector<int>& nums) {
long long ans = 0;
int cnt = 0;
for(int i =0;i<nums.size();i++){
if( i >0 && nums[i] != nums[i-1] ){
cnt++; //不同的话可以将之前的cnt迭代进去
}else{
cnt=1; //相同的话就会增加 当前位置的那一个只有一个元素的数组
}
ans += cnt;
}
return ans;
}
};