1652. 拆炸弹
(前缀和)
// 前缀和
class Solution {
public:
vector<int> decrypt(vector<int>& code, int k) {
int n = code.size();
vector<int> res(n, 0), t;
if (k == 0) return res;
t = code;
t.insert(t.end(), code.begin(), code.end());
vector<int> s(2 * n + 1);
for (int i = 1; i <= 2 * n ; i ++ ) s[i] = t[i - 1] + s[i - 1];
if (k > 0) {
for (int i = 1; i <= n ; i ++ ) {
res[i - 1] = s[i + k] - s[i];
}
} else {
for (int i = 1; i <= n ; i ++ ) {
res[i - 1] = s[i + n - 1] - s[i + n + k - 1]; // 推导
}
}
return res;
}
};