Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 10f89f6

Browse files
feat: add solutions to lc problem: No.3034 (doocs#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‎

Lines changed: 105 additions & 3 deletions
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‎

Lines changed: 105 additions & 3 deletions
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 -->
Lines changed: 21 additions & 0 deletions
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+
};
Lines changed: 20 additions & 0 deletions
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+
}
Lines changed: 22 additions & 0 deletions
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+
}
Lines changed: 18 additions & 0 deletions
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
Lines changed: 22 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /