LeetCode 1652. 拆炸弹(前缀和)
文章目录
- 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. 拆炸弹(前缀和)相关推荐
- 【LeetCode】1652. 拆炸弹(C++)
1652. 拆炸弹(C++) 1 题目描述 2 示例描述 2.1 示例1 2.2 示例2 2.3 示例3 3 解题提示 4 解题思路 5 源码详解(C++) 1 题目描述 你有一个炸弹需要拆除,时间紧 ...
- 【1652. 拆炸弹】
来源:力扣(LeetCode) 描述: 你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k . 为了获得正确的密码,你需要替换掉每一个数字.所有 ...
- 力扣 1652. 拆炸弹
题目 你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k . 为了获得正确的密码,你需要替换掉每一个数字.所有数字会 同时 被替换. 如果 k ...
- 汇编 二进制拆炸弹 r -t 3 -x 124
文章目录 注 实验环境: 实验内容 实验步骤 调试过程及实验 总结 附录 注 QUT大二汇编最后一个作业:拆炸弹 通过两天中间隙来做这个实验,不能交个实验报告就完事了,毕竟是第一次接触逆向工程,老师为 ...
- Leetcode 208.实现 Trie (前缀树)(Implement Trie (Prefix Tree))
Leetcode 208.实现 Trie (前缀树) 1 题目描述(Leetcode题目链接) 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三 ...
- CSAPP_实验二 拆炸弹 汇编知识应用
CSAPP--实验二 拆炸弹 Phase1 disas phase_1, 反汇编 phase_1 函数 在 phase_1函数入口处 设置断点 break phase_1 run 开始运行,输入字符串 ...
- MIPS反汇编拆炸弹
计算机系统原理的实验,参考了我的前舍友和不知道哪位同学的博客,不过写得也太简略了并且还有一些错误,更像是单纯的记录,对手头没代码的人大概没啥意义吧.所以就把我自己做时的带注释的代码贴住来吧,也不过是记 ...
- CSAPP 拆炸弹 中科大实验
实验二 拆炸弹 准备工作 首先反汇编 objdump -s -d bomb > bomb.txt phase_1 开启gdb调试,并打断点到phase_1 >> gbd bomb ( ...
- MIPS - 反汇编 - 拆炸弹 - bomb
MIPS - 反汇编 - 拆炸弹 - bomb 前言 整理文档发现了之前的实验报告,鉴于从17级开始才开始使用MIPS实验环境,取实验报告精华,整理主要思路如下.该博客叙述风格参考了窦优秀学长的博客. ...
最新文章
- AI进军服装零售产业:微软小冰与特步推出定制化服装设计生产及零售平台
- selenium提取数据之driver对象定位标签元素获取标签对象的方法
- 软件设计师备考知识05--设计模式
- java面试题解惑_JAVA面试题解惑系列(五)——传了值还是传了引用?
- 62个电脑常用快捷键大全,一次分享,果断收藏!
- linuxpython23同时_Linux-centos同时存在Python2-Python3
- php 采集暂停的原因,为什么小弟我curl的每次都只能抓取18个左右就自动停止了...
- 数字信号处理5:FIR滤波器设计
- Android编译构建,教程11:使用Android Studio编译构建behaviac
- PC电脑使用无线网卡连接上手机热点,为什么不能上网
- css制作实心三角形
- web应用负载均衡策略
- namenode元数据多目录配置及测试
- Linux网卡配置文件 参数详解
- 2-04-调用函数-0518
- 江苏师范大学计算机学院投档线,江苏师范大学科文学院2018年各省及各专业录取分数线及最低录投档线【理科 文科】...
- Git中smart Checkout与force checkout
- C++函数未运行,且显示Process returned -1073741571 (0xC00000FD)
- [编程题]计算一年中的第几天
- 烈火如歌手游找回服务器,烈火如歌手游闪退怎么办 游戏登陆不进去解决方法...