思路
用一个dp[i]数组记录以i下标结尾的最长交替组,填充数组长度为n+k以方便统计,当i>=k,dp[i]长度超过k时,ans++
代码实现
class Solution {
public:
int numberOfAlternatingGroups(vector<int>& colors, int k) {
int n=colors.size();
vector<int>a;
for(int i=n-k;i<n;i++){
a.push_back(colors[i]);
}
for(int i=0;i<n;i++){
a.push_back(colors[i]);
}
n=a.size();
vector<int>dp(n,0);
dp[0]=1;
int ans=0;
for(int i=1;i<n;i++){
if(a[i]!=a[i-1]){
dp[i]=dp[i-1]+1;
}else{
dp[i]=1;
}
if(i>=k&&dp[i]>=k){
ans++;
}
}
return ans;
}
};