Skip to content

Commit 94c0e25

Browse files
authored
Update Solution3.ts
1 parent 3bfe116 commit 94c0e25

File tree

1 file changed

+16
-14
lines changed
  • solution/1400-1499/1438.Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit

1 file changed

+16
-14
lines changed

solution/1400-1499/1438.Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit/Solution3.ts

+16-14
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
function longestSubarray(nums: number[], limit: number): number {
2-
const maxq: number[] = [];
3-
const minq: number[] = [];
42
const n = nums.length;
3+
let [h1, t1] = [0, -1];
4+
let [h2, t2] = [0, -1];
55
let l = 0;
6+
const maxq = Array(n);
7+
const minq = Array(n);
68
for (let r = 0; r < n; ++r) {
7-
while (maxq.length && nums[maxq.at(-1)!] < nums[r]) {
8-
maxq.pop();
9+
while (h1 <= t1 && nums[maxq[t1]] < nums[r]) {
10+
--t1;
911
}
10-
while (minq.length && nums[minq.at(-1)!] > nums[r]) {
11-
minq.pop();
12+
while (h2 <= t2 && nums[minq[t2]] > nums[r]) {
13+
--t2;
1214
}
13-
maxq.push(r);
14-
minq.push(r);
15-
if (nums[maxq[0]] - nums[minq[0]] > limit) {
16-
l++;
17-
if (maxq[0] < l) {
18-
maxq.shift();
15+
maxq[++t1] = r;
16+
minq[++t2] = r;
17+
if (nums[maxq[h1]] - nums[minq[h2]] > limit) {
18+
++l;
19+
if (maxq[h1] < l) {
20+
++h1;
1921
}
20-
if (minq[0] < l) {
21-
minq.shift();
22+
if (minq[h2] < l) {
23+
++h2;
2224
}
2325
}
2426
}

0 commit comments

Comments
 (0)