1652. Defuse the Bomb

Violence

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public int[] decrypt(int[] code, int k) {
int[] ans = new int[code.length];

for (int i = 0; i < ans.length; i++) {
if (k < 0) {
for (int j = k; j < 0; j++) {
// 注意此处 j 是负数,所以下方计算索引时使用的符号为加号
ans[i] += code[(i + code.length + j) % code.length];
}
} else if (k > 0) {
for (int j = 1; j <= k; j++) {
ans[i] += code[(i + j) % code.length];
}
}
}

return ans;
}
}

Prefix Sum

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public int[] decrypt(int[] code, int k) {
int n = code.length;

int[] prefixSums = new int[2 * n + 1];
for (int i = 0; i < 2 * n; i++) {
prefixSums[i + 1] = prefixSums[i] + code[i % n];
}

int[] res = new int[n];
for (int i = 0; i < n; i++) {
if (k < 0) {
res[i] = prefixSums[i + n] - prefixSums[i + n + k];
} else if (k > 0) {
res[i] = prefixSums[i + 1 + k] - prefixSums[i + 1];
}
}
return res;
}
}

References

1652. Defuse the Bomb