Create Maximum Number LeetCode solution in JavaScript

1
const maxNumber = (a, b, k) => {
2
let m = a.length,
3
n = b.length;
4
let res = [];
5
for (let i = Math.max(0, k - n); i <= Math.min(k, m); i++) {
6
let maxA = maxArray(a, i),
7
maxB = maxArray(b, k - i);
8
let merge = mergeArray(maxA, maxB);
9
if (merge > res) res = merge;
10
}
11
return res;
12
};
13

14
const maxArray = (a, k) => {
15
let drop = a.length - k,
16
res = [];
17
for (const x of a) {
18
while (drop > 0 && res.length && res[res.length - 1] < x) {
19
res.pop();
20
drop--;
21
}
22
res.push(x);
23
}
24
if (res.length >= k) {
25
res = res.slice(0, k);
26
} else {
27
res = res.concat(Array(k - res.length).fill(0));
28
}
29
return res;
30
};
31

32
const mergeArray = (a, b) => {
33
let res = [];
34
while (a.length + b.length) res.push(a > b ? a.shift() : b.shift());
35
return res;
36
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0