力扣题目:拆炸弹
题目链接: 1652.拆炸弹
题目描述
代码思路
根据代码实现分为k等于0和k不等于0的情况。k等于0很容易处理,而k不等于0时,需要使用滑动窗口的方式来解决。先根据小于0或大于0确定一个窗口,然后移动,获取修改后该位置的值,直到整个数组修改完毕。
代码解析版
class Solution {public int[] decrypt(int[] code, int k) {int n = code.length;// k==0时if (k == 0) {return new int[n];}//k!=0时int[] res = new int[n];int[] newCode = new int[n * 2];//newcode是两个code连在一起System.arraycopy(code, 0, newCode, 0, n);System.arraycopy(code, 0, newCode, n, n);code = newCode;//确定起始窗口int l = k > 0 ? 1 : n + k;int r = k > 0 ? k : n - 1;int w = 0;for (int i = l; i <= r; i++) {w += code[i];}//滑动窗口for (int i = 0; i < n; i++) {res[i] = w;w -= code[l];w += code[r + 1];l++;r++;}return res;}
}