这道题的题意就是在一个给定的数组中找到连续k个长度为m的相同元素的子集,我们首先会想到的肯定是遍历数组,因为是连续的,而且符合条件的子集的总长度m*k的值小于数组的长度,那么我们应该如何进行遍历呢?
class Solution {
public boolean containsPattern(int[] arr, int m, int k) {
int n=arr.length;
//由于必须是连续的,我们就可以查看当前k*m个元素是否符合要求
for(int i=0;i<=n-m*k;i++){
int pre=i,j=i+m;
while(j<i+m*k){
if(arr[pre]==arr[j]){
pre++;
j++;
}else{
break;
}
}
if(j==i+m*k){
return true;
}
}
return false;
}
}