Largest Values From Labels LeetCode solution in JavaScript

1
/**
2
* @param {number[]} values
3
* @param {number[]} labels
4
* @param {number} numWanted
5
* @param {number} useLimit
6
* @return {number}
7
*/
8
var largestValsFromLabels = function (values, labels, numWanted, useLimit) {
9
// this sortValues will create an addition array that keep track of the value idx after descending sort
10
// which is useful to map the labels accordingly
11
let sortValues = values.map((val, idx) => [val, idx]),
12
sortLabels = [];
13
sortValues.sort((a, b) => b[0] - a[0]);
14

15
for (let [val, idx] of sortValues) {
16
sortLabels.push(labels[idx]);
17
}
18
values.sort((a, b) => b - a);
19
labels = sortLabels;
20

21
let i = 0,
22
map = {},
23
ans = 0;
24
while (i < values.length && numWanted > 0) {
25
if (map[labels[i]]) map[labels[i]]++;
26
else map[labels[i]] = 1;
27

28
if (map[labels[i]] <= useLimit) {
29
ans += values[i];
30
numWanted--;
31
}
32

33
i++;
34
}
35

36
return ans;
37
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0