题目链接:Leetcode 1652. 拆炸弹
题意:
你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 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:
vector<int> decrypt(vector<int>& code, int k) {
int n = code.size();
vector<int> ans(n, 0);
if(k == 0) {
return ans;
} else if(k > 0) {
for(int i = 0; i < n; i++) {
int res = 0;
for(int j = 1; j <= k; j++) {
res += code[(i+j+n)%n];
}
ans[i] = res;
}
} else {
for(int i = 0; i < n; i++) {
int res = 0;
for(int j = 1; j <= -k; j++) {
res += code[(i-j+n)%n];
}
ans[i] = res;
}
}
return ans;
}
};