该题关键是利用循环数组(取余)。
class Solution {
public int[] decrypt(int[] code, int k) {
int[] a = new int[code.length];
//计数器
int cnt = 0;
if (k > 0) {
for (int i = 0; i < a.length; i++) {
for (int j = i + 1; cnt < k; j++) {
cnt++;
a[i] += code[j % code.length];
}
cnt = 0;
}
} else if (k < 0) {
for (int i = 0; i < a.length; i++) {
for (int j = i - 1; cnt < -k; j--) {
cnt++;
if (j < 0) {
a[i] += code[j % code.length + code.length];
} else {
a[i] += code[j % code.length];
}
}
cnt = 0;
}
} else {
for (int i = 0; i < a.length; i++) {
a[i] = 0;
}
}
return a;
}
}