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 number Diff line number Diff line change 1
1
class Solution {
2
2
public:
3
3
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++;
20
19
}
21
- r += mark;
22
20
}
23
- return r ;
21
+ return c ;
24
22
}
25
23
};
You can’t perform that action at this time.
0 commit comments