文章目录

  • 1. 题目
  • 2. 解题

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 ,请你返回解密后的结果来拆除炸弹!

示例 1:
输入:code = [5,7,1,4], k = 3
输出:[12,10,16,13]
解释:每个数字都被接下来 3 个数字之和替换。
解密后的密码为 [7+1+4, 1+4+5, 4+5+7, 5+7+1]。
注意到数组是循环连接的。示例 2:
输入:code = [1,2,3,4], k = 0
输出:[0,0,0,0]
解释:当 k 为 0 时,所有数字都被 0 替换。示例 3:
输入:code = [2,4,9,3], k = -2
输出:[12,5,6,13]
解释:解密后的密码为 [3+9, 2+3, 4+2, 9+4] 。
注意到数组是循环连接的。如果 k 是负数,那么和为 之前 的数字。提示:
n == code.length
1 <= n <= 100
1 <= code[i] <= 100
-(n - 1) <= k <= n - 1

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/defuse-the-bomb
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 将数组拼接一次,计算前缀和、后缀和即可
class Solution {public:vector<int> decrypt(vector<int>& code, int k) {int n = code.size();if(k == 0){vector<int> ans(n, 0);return ans;}vector<int> temp(code);for(auto c : code)temp.push_back(c);//拼接数组vector<int> presum(n, 0), tailsum(n, 0);if(k < 0){k = -k;int sum = 0;for(int i = n-k; i < n; i++)sum += temp[i];//前k个的和for(int i = n; i < 2*n; i++){presum[i-n] = sum;sum -= temp[i-k];//左边删除sum += temp[i];//右边新进的增加}return presum;}else{int sum = 0;for(int i = n-1+k; i >= n; i--)sum += temp[i];//后k个数的和for(int i = n-1; i >= 0; i--){tailsum[i] = sum;sum -= temp[i+k];//右边的删除sum += temp[i];//左边的新进的增加}return tailsum;}}
};

4 ms 8.5 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1652. 拆炸弹(前缀和)相关推荐

  1. 【LeetCode】1652. 拆炸弹(C++)

    1652. 拆炸弹(C++) 1 题目描述 2 示例描述 2.1 示例1 2.2 示例2 2.3 示例3 3 解题提示 4 解题思路 5 源码详解(C++) 1 题目描述 你有一个炸弹需要拆除,时间紧 ...

  2. 【1652. 拆炸弹】

    来源:力扣(LeetCode) 描述: 你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k . 为了获得正确的密码,你需要替换掉每一个数字.所有 ...

  3. 力扣 1652. 拆炸弹

    题目 你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k . 为了获得正确的密码,你需要替换掉每一个数字.所有数字会 同时 被替换. 如果 k ...

  4. 汇编 二进制拆炸弹 r -t 3 -x 124

    文章目录 注 实验环境: 实验内容 实验步骤 调试过程及实验 总结 附录 注 QUT大二汇编最后一个作业:拆炸弹 通过两天中间隙来做这个实验,不能交个实验报告就完事了,毕竟是第一次接触逆向工程,老师为 ...

  5. Leetcode 208.实现 Trie (前缀树)(Implement Trie (Prefix Tree))

    Leetcode 208.实现 Trie (前缀树) 1 题目描述(Leetcode题目链接)   实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三 ...

  6. CSAPP_实验二 拆炸弹 汇编知识应用

    CSAPP--实验二 拆炸弹 Phase1 disas phase_1, 反汇编 phase_1 函数 在 phase_1函数入口处 设置断点 break phase_1 run 开始运行,输入字符串 ...

  7. MIPS反汇编拆炸弹

    计算机系统原理的实验,参考了我的前舍友和不知道哪位同学的博客,不过写得也太简略了并且还有一些错误,更像是单纯的记录,对手头没代码的人大概没啥意义吧.所以就把我自己做时的带注释的代码贴住来吧,也不过是记 ...

  8. CSAPP 拆炸弹 中科大实验

    实验二 拆炸弹 准备工作 首先反汇编 objdump -s -d bomb > bomb.txt phase_1 开启gdb调试,并打断点到phase_1 >> gbd bomb ( ...

  9. MIPS - 反汇编 - 拆炸弹 - bomb

    MIPS - 反汇编 - 拆炸弹 - bomb 前言 整理文档发现了之前的实验报告,鉴于从17级开始才开始使用MIPS实验环境,取实验报告精华,整理主要思路如下.该博客叙述风格参考了窦优秀学长的博客. ...

最新文章

  1. AI进军服装零售产业:微软小冰与特步推出定制化服装设计生产及零售平台
  2. selenium提取数据之driver对象定位标签元素获取标签对象的方法
  3. 软件设计师备考知识05--设计模式
  4. java面试题解惑_JAVA面试题解惑系列(五)——传了值还是传了引用?
  5. 62个电脑常用快捷键大全,一次分享,果断收藏!
  6. linuxpython23同时_Linux-centos同时存在Python2-Python3
  7. php 采集暂停的原因,为什么小弟我curl的每次都只能抓取18个左右就自动停止了...
  8. 数字信号处理5:FIR滤波器设计
  9. Android编译构建,教程11:使用Android Studio编译构建behaviac
  10. PC电脑使用无线网卡连接上手机热点,为什么不能上网
  11. css制作实心三角形
  12. web应用负载均衡策略
  13. namenode元数据多目录配置及测试
  14. Linux网卡配置文件 参数详解
  15. 2-04-调用函数-0518
  16. 江苏师范大学计算机学院投档线,江苏师范大学科文学院2018年各省及各专业录取分数线及最低录投档线【理科 文科】...
  17. Git中smart Checkout与force checkout
  18. C++函数未运行,且显示Process returned -1073741571 (0xC00000FD)
  19. [编程题]计算一年中的第几天
  20. 烈火如歌手游找回服务器,烈火如歌手游闪退怎么办 游戏登陆不进去解决方法...

热门文章

  1. Python3生成脚本实现重置键盘键位
  2. Perforce使用指南_forP4V
  3. canny算子的理论分析
  4. 线程安全和可重入函数的联系与区别
  5. 贪心算法设计作业调度c语言,贪心算法 - 数据结构与算法教程 - C语言网
  6. ES6 数组、对象的扩展
  7. 消息中间件核心实体(1)
  8. JavaScrip入门-变量计算%函数
  9. loadView加载(变换成ScrollView)
  10. DirectX API 编程起步 #01 项目设置