Largest Component Size by Common Factor LeetCode solution in JavaScript

1
var largestComponentSize = function (nums) {
2
const rootByFactor = new Map();
3
const parents = new Array(nums.length);
4

5
function addFactor(i, factor) {
6
if (rootByFactor.has(factor)) {
7
let r = rootByFactor.get(factor);
8
while (parents[i] != i) i = parents[i];
9
while (parents[r] != r) r = parents[r];
10
parents[i] = r;
11
}
12
rootByFactor.set(factor, parents[i]);
13
}
14

15
for (const [i, num] of nums.entries()) {
16
parents[i] = i;
17
addFactor(i, num);
18
for (let factor = 2; factor * factor <= num; ++factor) {
19
if (num % factor == 0) {
20
addFactor(i, factor);
21
addFactor(i, num / factor);
22
}
23
}
24
}
25

26
let largest = 0;
27
const sums = new Array(nums.length).fill(0);
28
for (let r of parents) {
29
while (parents[r] != r) r = parents[r];
30
largest = Math.max(largest, ++sums[r]);
31
}
32
return largest;
33
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0