题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个整型数组加一个数字 k,按照 k 的值重新生成一个数组,比如 k 为正数,那么数组的每个下标要同时替换为其后面 k 个数之和;k 为附属,则换为其前面 k 个数之和。

思路分享

代码解答(强烈建议自行解答后再看)

  • 参照的解法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public:
vector<int> decrypt(vector<int>& code, int k) {
int n = code.size();

vector<int> ans(n);

int right = k > 0 ? k+1 : n; // 第一个窗口右边的下标

k = abs(k);

int s = reduce(code.begin() + right - k, code.begin() + right);

for (int i = 0; i < n; i++) {
ans[i] = s;
s += code[right % n] - code[(right - k) % n];
right++;
}

return ans;
}
};