力扣 1652. 拆炸弹
题目
你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 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 ,请你返回解密后的结果来拆除炸弹!
示例
输入:code = [5,7,1,4], k = 3
输出:[12,10,16,13]
解释:每个数字都被接下来 3 个数字之和替换。解密后的密码为 [7+1+4, 1+4+5, 4+5+7, 5+7+1]。注意到数组是循环连接的。
输入:code = [1,2,3,4], k = 0
输出:[0,0,0,0]
解释:当 k 为 0 时,所有数字都被 0 替换。
输入:code = [2,4,9,3], k = -2
输出:[12,5,6,13]
解释:解密后的密码为 [3+9, 2+3, 4+2, 9+4] 。注意到数组是循环连接的。如果 k 是负数,那么和为 之前 的数字。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/defuse-the-bomb
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法1:模拟
Java实现
class Solution {public int[] decrypt(int[] code, int k) {int n = code.length;int[] ans = new int[n];for (int i = 0; i < n; i++) {if (k > 0) {int sum = 0;for (int j = 1; j <= k; j++) {sum += code[(i + j) % n];}ans[i] = sum;} else if (k < 0) {int sum = 0;for (int j = 1; j <= Math.abs(k); j++) {sum += code[(i - j + n) % n];}ans[i] = sum;} else {ans[i] = 0;}}return ans;}
}
方法2:滑动窗口
⭐题解:https://leetcode.cn/problems/defuse-the-bomb/solution/-by-muse-77-w6yd/
Java实现
class Solution {public int[] decrypt(int[] code, int k) {int n = code.length;int[] res = new int[n];if (k == 0) return res;int sum = 0, count = Math.abs(k), head = k > 0 ? 0 : n - 1, tail = k > 0 ? 1 : 0;while (count-- > 0) {if (k > 0) {head = (head + 1) % n;sum += code[head];} else {tail = (tail - 1 + n) % n;sum += code[tail];}}res[0] = sum;for (int i = 1; i < n; i++) {head++;res[i] = sum + code[head % n] - code[tail];sum = res[i];tail++;tail = tail % n;}return res;}
}
力扣 1652. 拆炸弹相关推荐
- 【LeetCode】1652. 拆炸弹(C++)
1652. 拆炸弹(C++) 1 题目描述 2 示例描述 2.1 示例1 2.2 示例2 2.3 示例3 3 解题提示 4 解题思路 5 源码详解(C++) 1 题目描述 你有一个炸弹需要拆除,时间紧 ...
- LeetCode 1652. 拆炸弹(前缀和)
文章目录 1. 题目 2. 解题 1. 题目 你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k . 为了获得正确的密码,你需要替换掉每一个数字 ...
- 【1652. 拆炸弹】
来源:力扣(LeetCode) 描述: 你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k . 为了获得正确的密码,你需要替换掉每一个数字.所有 ...
- LeetCode简单题之拆炸弹
题目 你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k . 为了获得正确的密码,你需要替换掉每一个数字.所有数字会 同时 被替换. 如果 k ...
- 力扣解法汇总838-推多米诺
原题链接:力扣 描述: n 张多米诺骨牌排成一行,将每张多米诺骨牌垂直竖立.在开始时,同时把一些多米诺骨牌向左或向右推. 每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌.同样地,倒向右边的 ...
- 力扣772 基本计算器 III
772. 基本计算器 III 实现一个基本的计算器来计算简单的表达式字符串. 表达式字符串只包含非负整数,算符 +.-.*./ ,左括号 ( 和右括号 ) .整数除法需要 向下截断 . 你可以假定给定 ...
- LeetCode 力扣算法题解汇总,All in One
作者: 负雪明烛 id: fuxuemingzhu 个人博客: https://fuxuemingzhu.cn 关键词:LeetCode,力扣,算法,题解,汇总,解析 把自己刷过的所有题目做一个整理, ...
- 力扣LeetCode(二)T41-T80
文章目录 41.缺失的第一个正数 42.接雨水 43.字符串相乘 44.通配符匹配 45.跳跃游戏 II (贪心) 46.全排列(两种模板) 47.全排列 II(序列不重模板) 48.旋转图像 49. ...
- 滑动窗口算法框架(Java版)秒杀力扣题(76、567、438、3、485)
一.声明 1.非常感谢东哥(labuladong)分享了**滑动窗口算法框架**: 2.我在理解了东哥的思想后,用Java实现了滑动窗口算法框架,一来方便自己学习,二来方便一些Java小伙伴: 3.再 ...
最新文章
- wordpress php 7 速度优化,WordPress优化提速必做的6种操作代码篇
- Express框架(http服务器 + 路由)
- poj2392 Space Elevator
- 【渝粤教育】 国家开放大学2020年春季 1129土木工程力学(本) 参考试题
- Hibernate第十一篇【配置C3P0数据库连接池、线程Session】
- PHP——0128练习相关1——window.open()
- 2019春第八周作业
- D3、EChart、HighChart绘图demol
- python教程推荐-入门python有什么好的书籍推荐?
- jupyter notebook python3路径_详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式...
- Gstreamer之gst-plugin-bad交叉编译集成x265(二十二)
- 微信小程序调出选择好友聊天窗口
- 图像分割并存储 matlab,用于面积增长的Matlab图像分割程序
- UCOS操作系统——任务内嵌信号量(十一)
- Halcon contour相关操作
- 2021-06-08实验室如何正确选择和确认检测方法?
- 微信小程序隐藏tabBar
- python制作qq登录界面_用Python实现一个最新QQ办公版(TIM)的登录界面
- 通过数据分析改进并达成SEO优化目标
- 车载 DCAC 电源模块
热门文章
- 使用智能指针错误导致内存泄漏_C++智能指针使用的那些事
- 【Android 小功能】双击返回键返回桌面(进入后台),再次进入不加载启动页,物理键双击退回桌面
- 最强赛亚人服务器维护,龙珠最强赛亚人手游正式版-龙珠最强赛亚人游戏最新特别版v2.0预约-日历表...
- 升级Xcode7发现的一些问题和解决方案
- Android系统(MT6797)CPU频率工作模式以及调整频率的方法
- 机器人军团防护罩_《复联3》瓦坎达防御暴露致命缺陷,钢铁侠军团可以轻松突破!...
- UE4中如何播放全景视频/全景视频如何在VR设备中播放
- 那些优秀的开源系统恢复软件
- 360网页如何扩展html5,360安全浏览器如何添加扩展
- 20190220《前赤壁赋---苏轼》