Input: code =[5,7,1,4], k =3Output: [12,10,16,13]Explanation: Each number is replaced by the sum of the next 3 numbers. The decrypted code is[7+1+4,1+4+5,4+5+7,5+7+1]. Notice that the numbers wrap around.
Example 2:
1
2
3
Input: code =[1,2,3,4], k =0Output: [0,0,0,0]Explanation: When k is zero, the numbers are replaced by 0.
Example 3:
1
2
3
Input: code =[2,4,9,3], k =-2Output: [12,5,6,13]Explanation: The decrypted code is[3+9,2+3,4+2,9+4]. Notice that the numbers wrap around again. If k is negative, the sum is of the **previous** numbers.
classSolution {
publicint[]decrypt(int[] code, int k) {
int n = code.length;
int[] ans =newint[n];
if (k == 0) {
return ans;
}
if (k > 0) {
for (int i = 0; i < n; i++) {
int sum = 0;
for (int j = 1; j <= k; j++) {
sum += code[(i + j) % n];
}
ans[i]= sum;
}
} else { // k < 0 k =-k;
for (int i = 0; i < n; i++) {
int sum = 0;
for (int j = 1; j <= k; j++) {
sum += code[(i - j + n) % n];
}
ans[i]= sum;
}
}
return ans;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
classSolution:
defdecrypt(self, code: List[int], k: int) -> List[int]:
n = len(code)
ans = [0] * n
if k ==0:
return ans
if k >0:
for i in range(n):
ans[i] = sum(code[(i + j) % n] for j in range(1, k +1))
else: # k < 0for i in range(n):
ans[i] = sum(code[(i + j) % n] for j in range(k, 0))
return ans