LeetCode #1652. Defuse the Bomb
阿新 • • 發佈:2020-12-04
題目
解題方法
按照k=0、k>0、k<0三種情況分類討論,k=0直接返回全零陣列;k>0時先初始化一個sumk,把第一個元素處理好,然後遍歷剩下的元素,sumk作為滑動視窗計算總和,結果存入返回值rat;k<0時類似也用滑動視窗做。
時間複雜度:O(n)
空間複雜度:O(n)
程式碼
class Solution: def decrypt(self, code: List[int], k: int) -> List[int]: if not k: return [0 for _ in range(len(code))] elif k > 0: sumk = sum(code[1:k % len(code) + 1]) rat = [sumk] for i in range(1, len(code)): sumk = sumk - code[i] + code[(i + k) % len(code)] rat.append(sumk) return rat else: sumk = sum(code[(k + 1) % len(code) - 1:]) rat = [sumk] for i in range(1, len(code)): sumk = sumk - code[(i + k - 1) % len(code)] + code[i-1] rat.append(sumk) return rat