@@ -52,19 +52,123 @@ Hence, there are 2 subarrays in nums that match the pattern.
52
52
<!-- tabs:start -->
53
53
54
54
``` 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
56
73
```
57
74
58
75
``` 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
+ }
60
98
```
61
99
62
100
``` cpp
63
-
101
+ class Solution {
102
+ public:
103
+ int countMatchingSubarrays(vector<int >& nums, vector<int >& pattern) {
104
+ assert(nums.size() >= 2 && nums.size() <= 100);
105
+ for (int x : nums) {
106
+ assert(x >= 1 && x <= 1000000000);
107
+ }
108
+ const int m = pattern.size();
109
+ assert(m >= 1 && m < nums.size());
110
+ for (int x : pattern) {
111
+ assert(abs(x) <= 1);
112
+ }
113
+ int r = 0;
114
+ for (int i = 0; i + m < nums.size(); ++i) {
115
+ bool mark = true;
116
+ for (int k = 0; mark && k < m; ++k) {
117
+ mark = (pattern[ k] == 1 && nums[ i + k + 1] > nums[ i + k] )
118
+ || (pattern[ k] == 0 && nums[ i + k + 1] == nums[ i + k] )
119
+ || (pattern[ k] == -1 && nums[ i + k + 1] < nums[ i + k] );
120
+ }
121
+ r += mark;
122
+ }
123
+ return r;
124
+ }
125
+ };
64
126
```
65
127
66
128
```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
+ ```
67
150
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 ((pattern [j ] === 1 && nums [i + j + 1 ] <= nums [i + j ]) ||
160
+ (pattern [j ] === 0 && nums [i + j + 1 ] !== nums [i + j ]) ||
161
+ (pattern [j ] === - 1 && nums [i + j + 1 ] >= nums [i + j ])) {
162
+ flag = false ;
163
+ break ;
164
+ }
165
+ }
166
+ if (flag ) {
167
+ count ++ ;
168
+ }
169
+ }
170
+ return count ;
171
+ }
68
172
```
69
173
70
174
<!-- tabs: end -->
0 commit comments