1652. Defuse the Bomb #
题目 #
- 你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为
n
的 循环 数组code
以及一个密钥k
。 - 为了获得正确的密码,你需要替换掉每一个数字。所有数字会 同时 被替换。
- 如果
k > 0
,将第i
个数字用 接下来k
个数字之和替换。 - 如果
k < 0
,将第i
个数字用 之前k
个数字之和替换。 - 如果
k == 0
,将第i
个数字用0
替换。
- 如果
- 由于
code
是循环的,code[n-1]
下一个元素是code[0]
,且code[0]
前一个元素是code[n-1]
。 - 给你 循环 数组
code
和整数密钥k
,请你返回解密后的结果来拆除炸弹!
思路 #
模拟 #
前缀和 #
代码 #
模拟 #
class Solution {
public int[] decrypt(int[] code, int k) {
int[] ans = new int[code.length];
for (int i = 0; i < ans.length; i++) {
for (int j = 1; j <= Math.abs(k); j++) {
int index = k > 0 ? (i + j) % code.length : (i - j + code.length) % code.length;
ans[i] += code[index];
}
}
return ans;
}
}