1652. Defuse the Bomb LeetCode Solution

In this guide, you will get 1652. Defuse the Bomb LeetCode Solution with the best time and space complexity. The solution to Defuse the Bomb problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.

Table of Contents

  1. Problem Statement
  2. Complexity Analysis
  3. Defuse the Bomb solution in C++
  4. Defuse the Bomb solution in Java
  5. Defuse the Bomb solution in Python
  6. Additional Resources
1652. Defuse the Bomb LeetCode Solution image

Problem Statement of Defuse the Bomb

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:

See also  1013. Partition Array Into Three Parts With Equal Sum LeetCode Solution

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

Complexity Analysis

  • Time Complexity: O(n)
  • Space Complexity: O(n)

1652. Defuse the Bomb LeetCode Solution in C++

class Solution {
 public:
  vector<int> decrypt(vector<int>& code, int k) {
    const int n = code.size();
    vector<int> ans(n);
    if (k == 0)
      return ans;

    int sum = 0;
    int start = k > 0 ? 1 : n + k;  // the start of the next k numbers
    int end = k > 0 ? k : n - 1;    // the end of the next k numbers

    for (int i = start; i <= end; ++i)
      sum += code[i];

    for (int i = 0; i < n; ++i) {
      ans[i] = sum;
      sum -= code[start++ % n];
      sum += code[++end % n];
    }

    return ans;
  }
};
/* code provided by PROGIEZ */

1652. Defuse the Bomb LeetCode Solution in Java

class Solution {
  public int[] decrypt(int[] code, int k) {
    final int n = code.length;
    int[] ans = new int[n];
    if (k == 0)
      return ans;

    int sum = 0;
    int start = k > 0 ? 1 : n + k; // the start of the next k numbers
    int end = k > 0 ? k : n - 1;   // the end of the next k numbers

    for (int i = start; i <= end; ++i)
      sum += code[i];

    for (int i = 0; i < n; ++i) {
      ans[i] = sum;
      sum -= code[start++ % n];
      sum += code[++end % n];
    }

    return ans;
  }
}
// code provided by PROGIEZ

1652. Defuse the Bomb LeetCode Solution in Python

class Solution:
  def decrypt(self, code: list[int], k: int) -> list[int]:
    n = len(code)
    ans = [0] * n
    if k == 0:
      return ans

    summ = 0
    start = 1 if k > 0 else n + k  # the start of the next k numbers
    end = k if k > 0 else n - 1  # the end of the next k numbers

    for i in range(start, end + 1):
      summ += code[i]

    for i in range(n):
      ans[i] = summ
      summ -= code[start % n]
      start += 1
      end += 1
      summ += code[end % n]

    return ans
# code by PROGIEZ

Additional Resources

See also  1185. Day of the Week LeetCode Solution

Happy Coding! Keep following PROGIEZ for more updates and solutions.