Count Artifacts That Can Be Extracted LeetCode solution in JavaScript

1
/**
2
* @param {number} n
3
* @param {number[][]} artifacts
4
* @param {number[][]} dig
5
* @return {number}
6
*/
7
var digArtifacts = function (n, artifacts, dig) {
8
// Step 1
9
const virtualMap = []; // 0 = null, n = artifact_n
10
for (let x = 0; x < n; x++) {
11
const row = [];
12
for (let y = 0; y < n; y++) {
13
row.push(0);
14
}
15
virtualMap.push(row);
16
}
17

18
// Step 2
19
const artifactSize = [];
20
for (let artifactIdx in artifacts) {
21
let [artY1, artX1, artY2, artX2] = artifacts[artifactIdx];
22
artifactSize.push((artX2 + 1 - artX1) * (artY2 + 1 - artY1));
23
while (artY1 <= artY2) {
24
while (artX1 <= artX2) {
25
virtualMap[artY1][artX1] = Number(artifactIdx) + 1;
26
artX1++;
27
}
28
artY1++;
29
artX1 = artifacts[artifactIdx][1];
30
}
31
}
32

33
// Step 3
34
for (let digComp of dig) {
35
const [digY, digX] = digComp;
36
const content = virtualMap[digY][digX];
37
if (content !== 0) {
38
artifactSize[content - 1] -= 1;
39
}
40
}
41

42
// Step 4
43
return artifactSize.reduce((acc, remainder) => {
44
if (remainder === 0) {
45
acc++;
46
}
47
return acc;
48
}, 0);
49
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0