Defuse the Bomb
给一个循环数组arr和一个k, 给了k的规则, 求最后的数组.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
class Solution { public int[] decrypt(int[] code, int k) { int n = code.length; int[] nums = new int[3*n]; for(int i = 0; i < n; i++) { nums[i] = code[i]; nums[i+n] = code[i]; nums[i+n+n] = code[i]; } int[] res = new int[n]; if(k == 0) return res; else if(k > 0) { for(int i = 0; i < n; i++) { int sum = 0; for(int j = 0; j < k; j++) { sum += nums[n + i + j + 1]; } res[i] = sum; } } else { for(int i = 0; i < n; i++) { int sum = 0; for(int j = 0; j < Math.abs(k); j++) { sum += nums[n + i - j - 1]; } res[i] = sum; } } return res; } } |