Skip to content

Commit d83da51

Browse files
committed
feat: add solutions to lc problem: No.2444
No.2444.Count Subarrays With Fixed Bounds
1 parent 87266a3 commit d83da51

File tree

5 files changed

+213
-0
lines changed

5 files changed

+213
-0
lines changed

solution/2400-2499/2444.Count Subarrays With Fixed Bounds/README.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,10 +164,84 @@ func max(a, b int) int {
164164
}
165165
```
166166

167+
### **C**
168+
169+
```c
170+
#define max(a,b) (((a) > (b)) ? (a) : (b))
171+
#define min(a,b) (((a) < (b)) ? (a) : (b))
172+
173+
long long countSubarrays(int *nums, int numsSize, int minK, int maxK) {
174+
long long res = 0;
175+
int minIndex = -1;
176+
int maxIndex = -1;
177+
int k = -1;
178+
for (int i = 0; i < numsSize; i++) {
179+
int num = nums[i];
180+
if (num == minK) {
181+
minIndex = i;
182+
}
183+
if (num == maxK) {
184+
maxIndex = i;
185+
}
186+
if (num < minK || num > maxK) {
187+
k = i;
188+
}
189+
res += max(min(minIndex, maxIndex) - k, 0);
190+
}
191+
return res;
192+
}
193+
```
194+
167195
### **TypeScript**
168196
169197
```ts
198+
function countSubarrays(nums: number[], minK: number, maxK: number): number {
199+
let res = 0;
200+
let minIndex = -1;
201+
let maxIndex = -1;
202+
let k = -1;
203+
nums.forEach((num, i) => {
204+
if (num === minK) {
205+
minIndex = i;
206+
}
207+
if (num === maxK) {
208+
maxIndex = i;
209+
}
210+
if (num < minK || num > maxK) {
211+
k = i;
212+
}
213+
res += Math.max(Math.min(minIndex, maxIndex) - k, 0);
214+
});
215+
return res;
216+
}
217+
```
170218

219+
### **Rust**
220+
221+
```rust
222+
impl Solution {
223+
pub fn count_subarrays(nums: Vec<i32>, min_k: i32, max_k: i32) -> i64 {
224+
let mut res = 0;
225+
let mut min_index = -1;
226+
let mut max_index = -1;
227+
let mut k = -1;
228+
for i in 0..nums.len() {
229+
let num = nums[i];
230+
let i = i as i64;
231+
if num == min_k {
232+
min_index = i;
233+
}
234+
if num == max_k {
235+
max_index = i;
236+
}
237+
if num < min_k || num > max_k {
238+
k = i;
239+
}
240+
res += 0.max(min_index.min(max_index) - k);
241+
}
242+
res
243+
}
244+
}
171245
```
172246

173247
### **...**

solution/2400-2499/2444.Count Subarrays With Fixed Bounds/README_EN.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,84 @@ func max(a, b int) int {
143143
}
144144
```
145145

146+
### **C**
147+
148+
```c
149+
#define max(a,b) (((a) > (b)) ? (a) : (b))
150+
#define min(a,b) (((a) < (b)) ? (a) : (b))
151+
152+
long long countSubarrays(int *nums, int numsSize, int minK, int maxK) {
153+
long long res = 0;
154+
int minIndex = -1;
155+
int maxIndex = -1;
156+
int k = -1;
157+
for (int i = 0; i < numsSize; i++) {
158+
int num = nums[i];
159+
if (num == minK) {
160+
minIndex = i;
161+
}
162+
if (num == maxK) {
163+
maxIndex = i;
164+
}
165+
if (num < minK || num > maxK) {
166+
k = i;
167+
}
168+
res += max(min(minIndex, maxIndex) - k, 0);
169+
}
170+
return res;
171+
}
172+
```
173+
146174
### **TypeScript**
147175
148176
```ts
177+
function countSubarrays(nums: number[], minK: number, maxK: number): number {
178+
let res = 0;
179+
let minIndex = -1;
180+
let maxIndex = -1;
181+
let k = -1;
182+
nums.forEach((num, i) => {
183+
if (num === minK) {
184+
minIndex = i;
185+
}
186+
if (num === maxK) {
187+
maxIndex = i;
188+
}
189+
if (num < minK || num > maxK) {
190+
k = i;
191+
}
192+
res += Math.max(Math.min(minIndex, maxIndex) - k, 0);
193+
});
194+
return res;
195+
}
196+
```
149197

198+
### **Rust**
199+
200+
```rust
201+
impl Solution {
202+
pub fn count_subarrays(nums: Vec<i32>, min_k: i32, max_k: i32) -> i64 {
203+
let mut res = 0;
204+
let mut min_index = -1;
205+
let mut max_index = -1;
206+
let mut k = -1;
207+
for i in 0..nums.len() {
208+
let num = nums[i];
209+
let i = i as i64;
210+
if num == min_k {
211+
min_index = i;
212+
}
213+
if num == max_k {
214+
max_index = i;
215+
}
216+
if num < min_k || num > max_k {
217+
k = i;
218+
}
219+
res += 0.max(min_index.min(max_index) - k);
220+
}
221+
res
222+
}
223+
}
150224
```
151225

152226
### **...**
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#define max(a,b) (((a) > (b)) ? (a) : (b))
2+
#define min(a,b) (((a) < (b)) ? (a) : (b))
3+
4+
long long countSubarrays(int *nums, int numsSize, int minK, int maxK) {
5+
long long res = 0;
6+
int minIndex = -1;
7+
int maxIndex = -1;
8+
int k = -1;
9+
for (int i = 0; i < numsSize; i++) {
10+
int num = nums[i];
11+
if (num == minK) {
12+
minIndex = i;
13+
}
14+
if (num == maxK) {
15+
maxIndex = i;
16+
}
17+
if (num < minK || num > maxK) {
18+
k = i;
19+
}
20+
res += max(min(minIndex, maxIndex) - k, 0);
21+
}
22+
return res;
23+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
impl Solution {
2+
pub fn count_subarrays(nums: Vec<i32>, min_k: i32, max_k: i32) -> i64 {
3+
let mut res = 0;
4+
let mut min_index = -1;
5+
let mut max_index = -1;
6+
let mut k = -1;
7+
for i in 0..nums.len() {
8+
let num = nums[i];
9+
let i = i as i64;
10+
if num == min_k {
11+
min_index = i;
12+
}
13+
if num == max_k {
14+
max_index = i;
15+
}
16+
if num < min_k || num > max_k {
17+
k = i;
18+
}
19+
res += 0.max(min_index.min(max_index) - k);
20+
}
21+
res
22+
}
23+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
function countSubarrays(nums: number[], minK: number, maxK: number): number {
2+
let res = 0;
3+
let minIndex = -1;
4+
let maxIndex = -1;
5+
let k = -1;
6+
nums.forEach((num, i) => {
7+
if (num === minK) {
8+
minIndex = i;
9+
}
10+
if (num === maxK) {
11+
maxIndex = i;
12+
}
13+
if (num < minK || num > maxK) {
14+
k = i;
15+
}
16+
res += Math.max(Math.min(minIndex, maxIndex) - k, 0);
17+
});
18+
return res;
19+
}

0 commit comments

Comments
 (0)