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;
}
}