File tree Expand file tree Collapse file tree 7 files changed +254
-11
lines changed
solution/1500-1599/1566.Detect Pattern of Length M Repeated K or More Times Expand file tree Collapse file tree 7 files changed +254
-11
lines changed Original file line number Diff line number Diff line change 64
64
65
65
<!-- 这里可写通用的实现逻辑 -->
66
66
67
+ ** 方法一:枚举**
68
+
69
+ 枚举数组的左端点 ` i ` ,判断是否存在一个 ` i ` ,满足对于任意 ` j∈[0, m * k) ` ,` arr[i + j] == arr[i + (j % m)] ` 。存在则返回 ` true ` ,否则返回 ` false ` 。
70
+
71
+ 时间复杂度 $O((n-m\times k)\times m \times k)$。
72
+
67
73
<!-- tabs:start -->
68
74
69
75
### ** Python3**
70
76
71
77
<!-- 这里可写当前语言的特殊实现逻辑 -->
72
78
73
79
``` python
74
-
80
+ class Solution :
81
+ def containsPattern (self , arr : List[int ], m : int , k : int ) -> bool :
82
+ n = len (arr)
83
+ for i in range (n - m * k + 1 ):
84
+ j = 0
85
+ while j < m * k:
86
+ if arr[i + j] != arr[i + (j % m)]:
87
+ break
88
+ j += 1
89
+ if j == m * k:
90
+ return True
91
+ return False
75
92
```
76
93
77
94
### ** Java**
78
95
79
96
<!-- 这里可写当前语言的特殊实现逻辑 -->
80
97
81
98
``` java
99
+ class Solution {
100
+ public boolean containsPattern (int [] arr , int m , int k ) {
101
+ int n = arr. length;
102
+ for (int i = 0 ; i <= n - m * k; ++ i) {
103
+ int j = 0 ;
104
+ for (; j < m * k; ++ j) {
105
+ if (arr[i + j] != arr[i + (j % m)]) {
106
+ break ;
107
+ }
108
+ }
109
+ if (j == m * k) {
110
+ return true ;
111
+ }
112
+ }
113
+ return false ;
114
+ }
115
+ }
116
+ ```
117
+
118
+ ### ** C++**
119
+
120
+ ``` cpp
121
+ class Solution {
122
+ public:
123
+ bool containsPattern(vector<int >& arr, int m, int k) {
124
+ int n = arr.size();
125
+ for (int i = 0; i <= n - m * k; ++i) {
126
+ int j = 0;
127
+ for (; j < m * k; ++j) {
128
+ if (arr[ i + j] != arr[ i + (j % m)] ) {
129
+ break;
130
+ }
131
+ }
132
+ if (j == m * k) {
133
+ return true;
134
+ }
135
+ }
136
+ return false;
137
+ }
138
+ };
139
+ ```
140
+
141
+ ### **Go**
142
+
143
+ ```go
144
+ func containsPattern(arr []int, m int, k int) bool {
145
+ n := len(arr)
146
+ for i := 0; i <= n-m*k; i++ {
147
+ j := 0
148
+ for ; j < m*k; j++ {
149
+ if arr[i+j] != arr[i+(j%m)] {
150
+ break
151
+ }
152
+ }
153
+ if j == m*k {
154
+ return true
155
+ }
156
+ }
157
+ return false
158
+ }
159
+ ```
82
160
161
+ ### ** TypeScript**
162
+
163
+ ``` ts
164
+ function containsPattern(arr : number [], m : number , k : number ): boolean {
165
+ const n = arr .length ;
166
+ for (let i = 0 ; i <= n - m * k ; ++ i ) {
167
+ let j = 0 ;
168
+ for (; j < m * k ; ++ j ) {
169
+ if (arr [i + j ] != arr [i + (j % m )]) {
170
+ break ;
171
+ }
172
+ }
173
+ if (j == m * k ) {
174
+ return true ;
175
+ }
176
+ }
177
+ return false ;
178
+ }
83
179
```
84
180
85
181
### ** ...**
Original file line number Diff line number Diff line change 52
52
### ** Python3**
53
53
54
54
``` python
55
-
55
+ class Solution :
56
+ def containsPattern (self , arr : List[int ], m : int , k : int ) -> bool :
57
+ n = len (arr)
58
+ for i in range (n - m * k + 1 ):
59
+ j = 0
60
+ while j < m * k:
61
+ if arr[i + j] != arr[i + (j % m)]:
62
+ break
63
+ j += 1
64
+ if j == m * k:
65
+ return True
66
+ return False
56
67
```
57
68
58
69
### ** Java**
59
70
60
71
``` java
72
+ class Solution {
73
+ public boolean containsPattern (int [] arr , int m , int k ) {
74
+ int n = arr. length;
75
+ for (int i = 0 ; i <= n - m * k; ++ i) {
76
+ int j = 0 ;
77
+ for (; j < m * k; ++ j) {
78
+ if (arr[i + j] != arr[i + (j % m)]) {
79
+ break ;
80
+ }
81
+ }
82
+ if (j == m * k) {
83
+ return true ;
84
+ }
85
+ }
86
+ return false ;
87
+ }
88
+ }
89
+ ```
90
+
91
+ ### ** C++**
92
+
93
+ ``` cpp
94
+ class Solution {
95
+ public:
96
+ bool containsPattern(vector<int >& arr, int m, int k) {
97
+ int n = arr.size();
98
+ for (int i = 0; i <= n - m * k; ++i) {
99
+ int j = 0;
100
+ for (; j < m * k; ++j) {
101
+ if (arr[ i + j] != arr[ i + (j % m)] ) {
102
+ break;
103
+ }
104
+ }
105
+ if (j == m * k) {
106
+ return true;
107
+ }
108
+ }
109
+ return false;
110
+ }
111
+ };
112
+ ```
113
+
114
+ ### **Go**
115
+
116
+ ```go
117
+ func containsPattern(arr []int, m int, k int) bool {
118
+ n := len(arr)
119
+ for i := 0; i <= n-m*k; i++ {
120
+ j := 0
121
+ for ; j < m*k; j++ {
122
+ if arr[i+j] != arr[i+(j%m)] {
123
+ break
124
+ }
125
+ }
126
+ if j == m*k {
127
+ return true
128
+ }
129
+ }
130
+ return false
131
+ }
132
+ ```
61
133
134
+ ### ** TypeScript**
135
+
136
+ ``` ts
137
+ function containsPattern(arr : number [], m : number , k : number ): boolean {
138
+ const n = arr .length ;
139
+ for (let i = 0 ; i <= n - m * k ; ++ i ) {
140
+ let j = 0 ;
141
+ for (; j < m * k ; ++ j ) {
142
+ if (arr [i + j ] != arr [i + (j % m )]) {
143
+ break ;
144
+ }
145
+ }
146
+ if (j == m * k ) {
147
+ return true ;
148
+ }
149
+ }
150
+ return false ;
151
+ }
62
152
```
63
153
64
154
### ** ...**
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ bool containsPattern (vector<int >& arr, int m, int k) {
4
+ int n = arr.size ();
5
+ for (int i = 0 ; i <= n - m * k; ++i) {
6
+ int j = 0 ;
7
+ for (; j < m * k; ++j) {
8
+ if (arr[i + j] != arr[i + (j % m)]) {
9
+ break ;
10
+ }
11
+ }
12
+ if (j == m * k) {
13
+ return true ;
14
+ }
15
+ }
16
+ return false ;
17
+ }
18
+ };
Original file line number Diff line number Diff line change
1
+ func containsPattern (arr []int , m int , k int ) bool {
2
+ n := len (arr )
3
+ for i := 0 ; i <= n - m * k ; i ++ {
4
+ j := 0
5
+ for ; j < m * k ; j ++ {
6
+ if arr [i + j ] != arr [i + (j % m )] {
7
+ break
8
+ }
9
+ }
10
+ if j == m * k {
11
+ return true
12
+ }
13
+ }
14
+ return false
15
+ }
Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public boolean containsPattern (int [] arr , int m , int k ) {
3
- if (arr .length < m * k ) {
4
- return false ;
5
- }
6
- for (int i = 0 ; i <= arr .length - m * k ; i ++) {
7
- boolean match = true ;
8
- for (int j = i + m ; j < i + m * k ; j ++) {
9
- if (arr [j ] != arr [j - m ]) {
10
- match = false ;
3
+ int n = arr .length ;
4
+ for (int i = 0 ; i <= n - m * k ; ++i ) {
5
+ int j = 0 ;
6
+ for (; j < m * k ; ++j ) {
7
+ if (arr [i + j ] != arr [i + (j % m )]) {
11
8
break ;
12
9
}
13
10
}
14
- if (match ) {
11
+ if (j == m * k ) {
15
12
return true ;
16
13
}
17
14
}
Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def containsPattern (self , arr : List [int ], m : int , k : int ) -> bool :
3
+ n = len (arr )
4
+ for i in range (n - m * k + 1 ):
5
+ j = 0
6
+ while j < m * k :
7
+ if arr [i + j ] != arr [i + (j % m )]:
8
+ break
9
+ j += 1
10
+ if j == m * k :
11
+ return True
12
+ return False
Original file line number Diff line number Diff line change
1
+ function containsPattern ( arr : number [ ] , m : number , k : number ) : boolean {
2
+ const n = arr . length ;
3
+ for ( let i = 0 ; i <= n - m * k ; ++ i ) {
4
+ let j = 0 ;
5
+ for ( ; j < m * k ; ++ j ) {
6
+ if ( arr [ i + j ] != arr [ i + ( j % m ) ] ) {
7
+ break ;
8
+ }
9
+ }
10
+ if ( j == m * k ) {
11
+ return true ;
12
+ }
13
+ }
14
+ return false ;
15
+ }
You can’t perform that action at this time.
0 commit comments