Skip to content

Commit 10f89f6

Browse files
authored
feat: add solutions to lc problem: No.3034 (#2339)
1 parent 11153c1 commit 10f89f6

File tree

7 files changed

+313
-6
lines changed

7 files changed

+313
-6
lines changed

solution/3000-3099/3034.Number of Subarrays That Match a Pattern I/README.md

+105-3
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,121 @@
5656
<!-- tabs:start -->
5757

5858
```python
59-
59+
class Solution:
60+
def countMatchingSubarrays(self, nums: List[int], pattern: List[int]) -> int:
61+
n = len(nums)
62+
m = len(pattern)
63+
count = 0
64+
for i in range(n - m):
65+
flag = True
66+
for j in range(m):
67+
if (
68+
(pattern[j] == 1 and nums[i + j + 1] <= nums[i + j])
69+
or (pattern[j] == 0 and nums[i + j + 1] != nums[i + j])
70+
or (pattern[j] == -1 and nums[i + j + 1] >= nums[i + j])
71+
):
72+
flag = False
73+
break
74+
if flag:
75+
count += 1
76+
return count
6077
```
6178

6279
```java
63-
80+
class Solution {
81+
public int countMatchingSubarrays(int[] nums, int[] pattern) {
82+
int n = nums.length;
83+
int m = pattern.length;
84+
int count = 0;
85+
for (int i = 0; i <= n - m - 1; i++) {
86+
boolean flag = true;
87+
for (int j = 0; j < m; j++) {
88+
if ((pattern[j] == 1 && nums[i + j + 1] <= nums[i + j]) ||
89+
(pattern[j] == 0 && nums[i + j + 1] != nums[i + j]) ||
90+
(pattern[j] == -1 && nums[i + j + 1] >= nums[i + j])) {
91+
flag = false;
92+
break;
93+
}
94+
}
95+
if (flag) {
96+
count++;
97+
}
98+
}
99+
return count;
100+
}
101+
}
64102
```
65103

66104
```cpp
67-
105+
class Solution {
106+
public:
107+
int countMatchingSubarrays(vector<int>& nums, vector<int>& pattern) {
108+
int n = nums.size();
109+
int m = pattern.size();
110+
int c = 0;
111+
for (int i = 0; i <= n - m - 1; i++) {
112+
bool flag = true;
113+
for (int j = 0; j < m; j++) {
114+
if ((pattern[j] == 1 && nums[i + j + 1] <= nums[i + j]) || (pattern[j] == 0 && nums[i + j + 1] != nums[i + j]) || (pattern[j] == -1 && nums[i + j + 1] >= nums[i + j])) {
115+
flag = false;
116+
break;
117+
}
118+
}
119+
if (flag) {
120+
c++;
121+
}
122+
}
123+
return c;
124+
}
125+
};
68126
```
69127
70128
```go
129+
func countMatchingSubarrays(nums []int, pattern []int) int {
130+
n := len(nums)
131+
m := len(pattern)
132+
count := 0
133+
for i := 0; i <= n-m-1; i++ {
134+
flag := true
135+
for j := 0; j < m; j++ {
136+
if (pattern[j] == 1 && nums[i+j+1] <= nums[i+j]) ||
137+
(pattern[j] == 0 && nums[i+j+1] != nums[i+j]) ||
138+
(pattern[j] == -1 && nums[i+j+1] >= nums[i+j]) {
139+
flag = false
140+
break
141+
}
142+
}
143+
if flag {
144+
count++
145+
}
146+
}
147+
return count
148+
}
149+
```
71150

151+
```ts
152+
function countMatchingSubarrays(nums: number[], pattern: number[]): number {
153+
const n: number = nums.length;
154+
const m: number = pattern.length;
155+
let count: number = 0;
156+
for (let i = 0; i <= n - m - 1; i++) {
157+
let flag: boolean = true;
158+
for (let j = 0; j < m; j++) {
159+
if (
160+
(pattern[j] === 1 && nums[i + j + 1] <= nums[i + j]) ||
161+
(pattern[j] === 0 && nums[i + j + 1] !== nums[i + j]) ||
162+
(pattern[j] === -1 && nums[i + j + 1] >= nums[i + j])
163+
) {
164+
flag = false;
165+
break;
166+
}
167+
}
168+
if (flag) {
169+
count++;
170+
}
171+
}
172+
return count;
173+
}
72174
```
73175

74176
<!-- tabs:end -->

solution/3000-3099/3034.Number of Subarrays That Match a Pattern I/README_EN.md

+105-3
Original file line numberDiff line numberDiff line change
@@ -52,19 +52,121 @@ Hence, there are 2 subarrays in nums that match the pattern.
5252
<!-- tabs:start -->
5353

5454
```python
55-
55+
class Solution:
56+
def countMatchingSubarrays(self, nums: List[int], pattern: List[int]) -> int:
57+
n = len(nums)
58+
m = len(pattern)
59+
count = 0
60+
for i in range(n - m):
61+
flag = True
62+
for j in range(m):
63+
if (
64+
(pattern[j] == 1 and nums[i + j + 1] <= nums[i + j])
65+
or (pattern[j] == 0 and nums[i + j + 1] != nums[i + j])
66+
or (pattern[j] == -1 and nums[i + j + 1] >= nums[i + j])
67+
):
68+
flag = False
69+
break
70+
if flag:
71+
count += 1
72+
return count
5673
```
5774

5875
```java
59-
76+
class Solution {
77+
public int countMatchingSubarrays(int[] nums, int[] pattern) {
78+
int n = nums.length;
79+
int m = pattern.length;
80+
int count = 0;
81+
for (int i = 0; i <= n - m - 1; i++) {
82+
boolean flag = true;
83+
for (int j = 0; j < m; j++) {
84+
if ((pattern[j] == 1 && nums[i + j + 1] <= nums[i + j]) ||
85+
(pattern[j] == 0 && nums[i + j + 1] != nums[i + j]) ||
86+
(pattern[j] == -1 && nums[i + j + 1] >= nums[i + j])) {
87+
flag = false;
88+
break;
89+
}
90+
}
91+
if (flag) {
92+
count++;
93+
}
94+
}
95+
return count;
96+
}
97+
}
6098
```
6199

62100
```cpp
63-
101+
class Solution {
102+
public:
103+
int countMatchingSubarrays(vector<int>& nums, vector<int>& pattern) {
104+
int n = nums.size();
105+
int m = pattern.size();
106+
int c = 0;
107+
for (int i = 0; i <= n - m - 1; i++) {
108+
bool flag = true;
109+
for (int j = 0; j < m; j++) {
110+
if ((pattern[j] == 1 && nums[i + j + 1] <= nums[i + j]) || (pattern[j] == 0 && nums[i + j + 1] != nums[i + j]) || (pattern[j] == -1 && nums[i + j + 1] >= nums[i + j])) {
111+
flag = false;
112+
break;
113+
}
114+
}
115+
if (flag) {
116+
c++;
117+
}
118+
}
119+
return c;
120+
}
121+
};
64122
```
65123
66124
```go
125+
func countMatchingSubarrays(nums []int, pattern []int) int {
126+
n := len(nums)
127+
m := len(pattern)
128+
count := 0
129+
for i := 0; i <= n-m-1; i++ {
130+
flag := true
131+
for j := 0; j < m; j++ {
132+
if (pattern[j] == 1 && nums[i+j+1] <= nums[i+j]) ||
133+
(pattern[j] == 0 && nums[i+j+1] != nums[i+j]) ||
134+
(pattern[j] == -1 && nums[i+j+1] >= nums[i+j]) {
135+
flag = false
136+
break
137+
}
138+
}
139+
if flag {
140+
count++
141+
}
142+
}
143+
return count
144+
}
145+
```
67146

147+
```ts
148+
function countMatchingSubarrays(nums: number[], pattern: number[]): number {
149+
const n: number = nums.length;
150+
const m: number = pattern.length;
151+
let count: number = 0;
152+
for (let i = 0; i <= n - m - 1; i++) {
153+
let flag: boolean = true;
154+
for (let j = 0; j < m; j++) {
155+
if (
156+
(pattern[j] === 1 && nums[i + j + 1] <= nums[i + j]) ||
157+
(pattern[j] === 0 && nums[i + j + 1] !== nums[i + j]) ||
158+
(pattern[j] === -1 && nums[i + j + 1] >= nums[i + j])
159+
) {
160+
flag = false;
161+
break;
162+
}
163+
}
164+
if (flag) {
165+
count++;
166+
}
167+
}
168+
return count;
169+
}
68170
```
69171

70172
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public:
3+
int countMatchingSubarrays(vector<int>& nums, vector<int>& pattern) {
4+
int n = nums.size();
5+
int m = pattern.size();
6+
int c = 0;
7+
for (int i = 0; i <= n - m - 1; i++) {
8+
bool flag = true;
9+
for (int j = 0; j < m; j++) {
10+
if ((pattern[j] == 1 && nums[i + j + 1] <= nums[i + j]) || (pattern[j] == 0 && nums[i + j + 1] != nums[i + j]) || (pattern[j] == -1 && nums[i + j + 1] >= nums[i + j])) {
11+
flag = false;
12+
break;
13+
}
14+
}
15+
if (flag) {
16+
c++;
17+
}
18+
}
19+
return c;
20+
}
21+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
func countMatchingSubarrays(nums []int, pattern []int) int {
2+
n := len(nums)
3+
m := len(pattern)
4+
count := 0
5+
for i := 0; i <= n-m-1; i++ {
6+
flag := true
7+
for j := 0; j < m; j++ {
8+
if (pattern[j] == 1 && nums[i+j+1] <= nums[i+j]) ||
9+
(pattern[j] == 0 && nums[i+j+1] != nums[i+j]) ||
10+
(pattern[j] == -1 && nums[i+j+1] >= nums[i+j]) {
11+
flag = false
12+
break
13+
}
14+
}
15+
if flag {
16+
count++
17+
}
18+
}
19+
return count
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
public int countMatchingSubarrays(int[] nums, int[] pattern) {
3+
int n = nums.length;
4+
int m = pattern.length;
5+
int count = 0;
6+
for (int i = 0; i <= n - m - 1; i++) {
7+
boolean flag = true;
8+
for (int j = 0; j < m; j++) {
9+
if ((pattern[j] == 1 && nums[i + j + 1] <= nums[i + j])
10+
|| (pattern[j] == 0 && nums[i + j + 1] != nums[i + j])
11+
|| (pattern[j] == -1 && nums[i + j + 1] >= nums[i + j])) {
12+
flag = false;
13+
break;
14+
}
15+
}
16+
if (flag) {
17+
count++;
18+
}
19+
}
20+
return count;
21+
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution:
2+
def countMatchingSubarrays(self, nums: List[int], pattern: List[int]) -> int:
3+
n = len(nums)
4+
m = len(pattern)
5+
count = 0
6+
for i in range(n - m):
7+
flag = True
8+
for j in range(m):
9+
if (
10+
(pattern[j] == 1 and nums[i + j + 1] <= nums[i + j])
11+
or (pattern[j] == 0 and nums[i + j + 1] != nums[i + j])
12+
or (pattern[j] == -1 and nums[i + j + 1] >= nums[i + j])
13+
):
14+
flag = False
15+
break
16+
if flag:
17+
count += 1
18+
return count
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
function countMatchingSubarrays(nums: number[], pattern: number[]): number {
2+
const n: number = nums.length;
3+
const m: number = pattern.length;
4+
let count: number = 0;
5+
for (let i = 0; i <= n - m - 1; i++) {
6+
let flag: boolean = true;
7+
for (let j = 0; j < m; j++) {
8+
if (
9+
(pattern[j] === 1 && nums[i + j + 1] <= nums[i + j]) ||
10+
(pattern[j] === 0 && nums[i + j + 1] !== nums[i + j]) ||
11+
(pattern[j] === -1 && nums[i + j + 1] >= nums[i + j])
12+
) {
13+
flag = false;
14+
break;
15+
}
16+
}
17+
if (flag) {
18+
count++;
19+
}
20+
}
21+
return count;
22+
}

0 commit comments

Comments
 (0)