1
/**
2
* @param {number[]} nums
3
* @param {number} threshold
4
* @return {number}
5
*/
6
var validSubarraySize = function (nums, threshold) {
7
/*
8
Approach: Use monotonous increasing array
9
*/
10
let stack = [];
11
for (let i = 0; i < nums.length; i++) {
12
let start = i;
13
while (stack.length > 0 && stack[stack.length - 1][0] > nums[i]) {
14
let popped = stack.pop();
15
let min = popped[0];
16
let len = i - popped[1];
17
if (min > threshold / len) {
18
return len;
19
}
20
start = popped[1];
21
}
22
stack.push([nums[i], start]);
23
}
24
let end = nums.length - 1;
25
for (let i = 0; i < stack.length; i++) {
26
let len = end - stack[i][1] + 1;
27
let min = stack[i][0];
28
if (min > threshold / len) {
29
return len;
30
}
31
}
32
return -1;
33
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0