Count Artifacts That Can Be Extracted LeetCode solution in C++

1
class Solution {
2
public:
3
int digArtifacts(int n, vector<vector<int>> &artifacts, vector<vector<int>> &dig) {
4
vector<vector<int>> arr(n, vector<int>(n, 1));
5
for (vector<int> &v : dig) {
6
arr[v[0]][v[1]] = 0;
7
}
8
int preSum[n + 1][n + 1];
9
for (int i = 0; i <= n; i++) {
10
preSum[i][0] = 0;
11
preSum[0][i] = 0;
12
}
13
for (int i = 1; i <= n; i++) {
14
for (int j = 1; j <= n; j++) {
15
preSum[i][j] =
16
preSum[i - 1][j] + preSum[i][j - 1] - preSum[i - 1][j - 1] + arr[i - 1][j - 1];
17
}
18
}
19
int res = 0, sum, r1, c1, r2, c2;
20
for (vector<int> &v : artifacts) {
21
r1 = v[0];
22
c1 = v[1];
23
r2 = v[2];
24
c2 = v[3];
25
sum = preSum[r2 + 1][c2 + 1] - preSum[r1][c2 + 1] - preSum[r2 + 1][c1] + preSum[r1][c1];
26
if (sum == 0) {
27
res++;
28
}
29
}
30
return res;
31
}
32
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0