g1601_1700.s1652_defuse_the_bomb.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java21 Show documentation
Show all versions of leetcode-in-java21 Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g1601_1700.s1652_defuse_the_bomb;
// #Easy #Array #2022_04_22_Time_0_ms_(100.00%)_Space_42.5_MB_(72.00%)
/**
* 1652 - Defuse the Bomb\.
*
* Easy
*
* You have a bomb to defuse, and your time is running out! Your informer will provide you with a **circular** array `code` of length of `n` and a key `k`.
*
* To decrypt the code, you must replace every number. All the numbers are replaced **simultaneously**.
*
* * If `k > 0`, replace the ith
number with the sum of the **next** `k` numbers.
* * If `k < 0`, replace the ith
number with the sum of the **previous** `k` numbers.
* * If `k == 0`, replace the ith
number with `0`.
*
* As `code` is circular, the next element of `code[n-1]` is `code[0]`, and the previous element of `code[0]` is `code[n-1]`.
*
* Given the **circular** array `code` and an integer key `k`, return _the decrypted code to defuse the bomb_!
*
* **Example 1:**
*
* **Input:** code = [5,7,1,4], k = 3
*
* **Output:** [12,10,16,13]
*
* **Explanation:** Each number is replaced by the sum of the next 3 numbers. The decrypted code is [7+1+4, 1+4+5, 4+5+7, 5+7+1]. Notice that the numbers wrap around.
*
* **Example 2:**
*
* **Input:** code = [1,2,3,4], k = 0
*
* **Output:** [0,0,0,0]
*
* **Explanation:** When k is zero, the numbers are replaced by 0.
*
* **Example 3:**
*
* **Input:** code = [2,4,9,3], k = -2
*
* **Output:** [12,5,6,13]
*
* **Explanation:** The decrypted code is [3+9, 2+3, 4+2, 9+4]. Notice that the numbers wrap around again. If k is negative, the sum is of the **previous** numbers.
*
* **Constraints:**
*
* * `n == code.length`
* * `1 <= n <= 100`
* * `1 <= code[i] <= 100`
* * `-(n - 1) <= k <= n - 1`
**/
public class Solution {
public int[] decrypt(int[] code, int k) {
int[] result = new int[code.length];
int len = code.length;
if (k == 0) {
for (int i = 0; i < code.length; i++) {
result[i] = 0;
}
} else if (k > 0) {
int kSum = 0;
for (int i = 1; i <= k; i++) {
kSum += code[i];
}
result[0] = kSum;
for (int i = 1; i < len; i++) {
kSum -= code[i];
kSum += code[(i + k) % len];
result[i] = kSum;
}
} else {
int kSum = 0;
int kVal = Math.abs(k);
for (int i = len - 1; i >= len - kVal; i--) {
kSum += code[i];
}
result[0] = kSum;
for (int i = 1; i < len; i++) {
kSum -= code[(len - kVal + i - 1) % len];
kSum += code[i - 1];
result[i] = kSum;
}
}
return result;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy