跳到主要内容

1652.拆炸弹

链接:1652.拆炸弹
难度:Easy
标签:数组、滑动窗口
简介:给你 循环 数组 code 和整数密钥 k ,请你返回解密后的结果来拆除炸弹!。

题解 1 - cpp

  • 编辑时间:2022-09-24
  • 内存消耗:8.2MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
vector<int> decrypt(vector<int>& code, int k) {
int n = code.size();
vector<int> ans(n, 0);
for (int i = 0; i < n; i++) {
if (k > 0) {
for (int j = (i + 1) % n, cnt = 0; cnt < k; cnt++, j = (j + 1) % n) ans[i] += code[j];
} else if (k < 0) {
for (int j = (i - 1 + n) % n, cnt = 0; cnt < -k; cnt++, j = (j - 1 + n) % n) ans[i] += code[j];
}
}
return ans;
}
};

题解 2 - python

  • 编辑时间:2024-05-05
  • 执行用时:53ms
  • 内存消耗:16.42MB
  • 编程语言:python
  • 解法介绍:遍历。
class Solution:
def decrypt(self, code: List[int], k: int) -> List[int]:
n = len(code)
if k == 0: return [0] * n
def get(idx: int) -> int:
res = 0
next = idx
for _ in range(abs(k)):
next = ((1 if k > 0 else -1) + next + n) % n
res += code[next]
return res
return [get(i) for i in range(n)]

题解 3 - python

  • 编辑时间:2024-05-05
  • 执行用时:53ms
  • 内存消耗:16.42MB
  • 编程语言:python
  • 解法介绍:遍历。
class Solution:
def decrypt(self, code: List[int], k: int) -> List[int]:
n = len(code)
if k == 0: return [0] * n
def get(idx: int) -> int:
res = 0
next = idx
for _ in range(abs(k)):
next = ((1 if k > 0 else -1) + next + n) % n
res += code[next]
return res
return [get(i) for i in range(n)]