滑动窗口,LeetCode 1652. 拆炸弹

目录

一、题目

1、题目描述

2、接口描述

python3

cpp

3、原题链接

二、解题报告

1、思路分析

2、复杂度

3、代码详解

python3

cpp


一、题目

1、题目描述

你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 n循环 数组 code 以及一个密钥 k

为了获得正确的密码,你需要替换掉每一个数字。所有数字会 同时 被替换。

  • 如果 k > 0 ,将第 i 个数字用 接下来 k 个数字之和替换。
  • 如果 k < 0 ,将第 i 个数字用 之前 k 个数字之和替换。
  • 如果 k == 0 ,将第 i 个数字用 0 替换。

由于 code 是循环的, code[n-1] 下一个元素是 code[0] ,且 code[0] 前一个元素是 code[n-1]

给你 循环 数组 code 和整数密钥 k ,请你返回解密后的结果来拆除炸弹!

2、接口描述

python3
复制代码
python 复制代码
class Solution:
    def decrypt(self, code: List[int], k: int) -> List[int]:
cpp
复制代码
cpp 复制代码
class Solution {
public:
    vector<int> decrypt(vector<int>& code, int k) {

    }
};

3、原题链接

1652. 拆炸弹


二、解题报告

1、思路分析

对于环形问题往往只需要对下标取模就可以解决

我们考虑维护长度为k的滑窗不断滑动,维护滑窗内的和,完成n个元素的计算

2、复杂度

时间复杂度: O(n)空间复杂度:O(1)

3、代码详解

python3
复制代码
python 复制代码
class Solution:
    def decrypt(self, code: List[int], k: int) -> List[int]:
        n = len(code)
        r = k + 1 if k > 0 else n
        k = abs(k)
        s = sum(code[r - k: r])
        ret = [0] * n
        for i in range(n):
            ret[i] = s
            s += code[r % n] - code[(r - k) % n]
            r += 1
        return ret
cpp
复制代码
cpp 复制代码
class Solution {
public:
    vector<int> decrypt(vector<int>& code, int k) {
        int n = code.size();
        int r = k > 0 ? k + 1 : n;
        k = abs(k);
        int s = accumulate(code.begin() + r - k, code.begin() + r, 0);
        vector<int> ret(n);
        for(int i = 0; i < n; i ++){
            ret[i] = s;
            s += code[r % n] - code[(r - k) % n];
            r ++;
        }
        return ret;
    }
};
相关推荐
橘颂TA8 分钟前
【Linux】从 “抢资源” 到 “优雅控场”:Linux 互斥锁的原理与 C++ RAII 封装实战(Ⅰ)
linux·运维·服务器·c++·算法
我命由我1234511 分钟前
开发中的英语积累 P25:Axis、Stroke、Corner、Interceptor、Declared、Internal
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
YGGP23 分钟前
【Golang】LeetCode 19. 删除链表的倒数第 N 个节点
算法·leetcode·链表
池塘的蜗牛30 分钟前
mmse-based-OFDM-signal-processing(2)
算法
平生不喜凡桃李37 分钟前
Leetcode-240 :搜索二维矩阵
leetcode·矩阵·深度优先
Kris_LinSD39 分钟前
算法小实验——分治算法快速排序问题实验(含报告)
c语言·算法
Super小白&40 分钟前
十大经典排序算法详解(附C语言实现+复杂度分析)
c语言·算法·排序算法
Eloudy40 分钟前
Birkhoff 多胞形,双随机矩阵的几何世界
算法
2503_946971861 小时前
【SystemDesign/HA】2025年度高可用分布式仿真节点与预测模型容灾演练配置 (Disaster Recovery Config)
大数据·分布式·算法·系统架构·数据集
GrowingYi1 小时前
算法基础技术栈
数据结构·算法