Skip to content

Commit 0a9cf6c

Browse files
authored
feat: add solutions to lc problem: No.3034
1 parent b778ba5 commit 0a9cf6c

File tree

1 file changed

+16
-18
lines changed
  • solution/3000-3099/3034.Number of Subarrays That Match a Pattern I

1 file changed

+16
-18
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,23 @@
11
class Solution {
22
public:
33
int countMatchingSubarrays(vector<int>& nums, vector<int>& pattern) {
4-
assert(nums.size() >= 2 && nums.size() <= 100);
5-
for (int x : nums) {
6-
assert(x >= 1 && x <= 1000000000);
7-
}
8-
const int m = pattern.size();
9-
assert(m >= 1 && m < nums.size());
10-
for (int x : pattern) {
11-
assert(abs(x) <= 1);
12-
}
13-
int r = 0;
14-
for (int i = 0; i + m < nums.size(); ++i) {
15-
bool mark = true;
16-
for (int k = 0; mark && k < m; ++k) {
17-
mark = (pattern[k] == 1 && nums[i + k + 1] > nums[i + k])
18-
|| (pattern[k] == 0 && nums[i + k + 1] == nums[i + k])
19-
|| (pattern[k] == -1 && nums[i + k + 1] < nums[i + k]);
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]) ||
11+
(pattern[j] == 0 && nums[i + j + 1] != nums[i + j]) ||
12+
(pattern[j] == -1 && nums[i + j + 1] >= nums[i + j])) {
13+
flag = false;
14+
break;
15+
}
16+
}
17+
if (flag) {
18+
c++;
2019
}
21-
r += mark;
2220
}
23-
return r;
21+
return c;
2422
}
2523
};

0 commit comments

Comments
 (0)