leetcode 5499. 少なくともK回、長さMのパターン(C++)を繰り返す
1859 ワード
正の整数配列
パターンは、1つ以上の値からなるサブ配列(連続するサブシーケンス)であり、何度も繰り返しますが重複しません.モードは、その長さと繰り返し回数によって定義されます.
配列に少なくとも
例1:
ヒント:
arr
をあげます.長さm
で、配列の中で少なくともk
回繰り返されるパターンを見つけてください.パターンは、1つ以上の値からなるサブ配列(連続するサブシーケンス)であり、何度も繰り返しますが重複しません.モードは、その長さと繰り返し回数によって定義されます.
配列に少なくとも
k
回繰り返され、長さがm
のパターンがある場合、true
を返し、そうでなければfalse
を返す.例1:
:arr = [1,2,4,4,4,4], m = 1, k = 3
:true
: (4) 1 , 4 。 , k , k 。
例2: :arr = [1,2,1,2,1,1,1,3], m = 2, k = 2
:true
: (1,2) 2 , 2 。 (2,1) , 2 。
例3: :arr = [1,2,1,2,1,3], m = 2, k = 3
:false
: (1,2) 2 , 2 。 2 3 。
例4: :arr = [1,2,3,1,2], m = 2, k = 2
:false
: (1,2) 2 , 2 。
例5: :arr = [2,2,2,2], m = 2, k = 3
:false
: 2 (2,2) , 2 。 , 。
ヒント:
2 <= arr.length <= 100
1 <= arr[i] <= 100
1 <= m <= 100
2 <= k <= 100
C++
class Solution {
public:
bool containsPattern(vector& arr, int m, int k)
{
int n=arr.size();
for(int i=0;i+m-1 tmp=vector(arr.begin()+i,arr.begin()+i+m);
int ans=1;
for(int j=i+m;j+m-1 vec=vector(arr.begin()+j,arr.begin()+j+m);
if(tmp==vec)
{
ans++;
if(ans==k)
{
return true;
}
}
else
{
break;
}
}
}
return false;
}
};