• 在家没事做做力扣1652. 拆炸弹


    动态规划思路,先提取公式,然后写代码

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

    示例 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 是负数,那么和为 之前 的数字。

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/defuse-the-bomb

    /**
     * @param {number[]} code
     * @param {number} k
     * @return {number[]}
     */
    var decrypt = function(code, k) {
        const len = code.length;
        const ncode = []
        //如果k>0
        if (k > 0) {
            code.forEach(function(val, i) {
                let nval = 0;
                let index = 0;
                while (index < k) {
                    index++;
                    nval = nval + code[(i + index) % len]
                }
                ncode.push(nval)
            })
        }
        //如果k<0
        else if (k < 0) {
            code.forEach(function(val, i) {
                let nval = 0;
                let index = 0;
                while (index > k) {
                    index--;
                    nval = nval + code[(i + index % len + len) % len]
                }
                ncode.push(nval)
            })
        }
        //如果k===0
        else if (k === 0) {
            code.forEach(function(val, i) {
                ncode.push(0)
            })
        }
        return ncode
    };
  • 相关阅读:
    GCC编译器原理(三)------编译原理三:编译过程(3)---编译之汇编以及静态链接【2】
    xmind转为markdown
    XMind破解
    读取字符串中的数字
    "Cannot declare member function ...to have static linkage"错误
    error: cannot bind non-const lvalue reference of type
    (C++ Error: Incompatible types in assignment of ‘char*’ to ‘char [2])
    C++中的map
    17 jQuery阶段_操作样式_操作属性_动画_节点操作
    第一部分:网络多任务_day01_网络编程基础
  • 原文地址:https://www.cnblogs.com/caoke/p/16726071.html
Copyright © 2020-2023  润新知