Home >Backend Development >PHP Tutorial >Defuse the Bomb
1652. Defuse the Bomb
Difficulty: Easy
Topics: Array, Sliding Window
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.
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:
Example 2:
Example 3:
Constraints:
Hint:
Solution:
We can implement a function that iterates over the code array and computes the sum of the appropriate numbers based on the value of k.
The general approach will be as follows:
The circular nature of the array means that for indices that exceed the bounds of the array, you can use modulo (%) to "wrap around" the array.
Let's implement this solution in PHP: 1652. Defuse the Bomb
Explanation:
Initialization:
- We create a result array initialized with zeros using array_fill.
Handling k == 0:
- If k is zero, the output array is simply filled with zeros, as required by the problem.
Iterating Through the Array:
- For each index i in the array:
- If k > 0, sum the next k elements using modulo arithmetic to wrap around.
- If k < 0, sum the previous |k| elements using modulo arithmetic with an offset to handle negative indices.
Modulo Arithmetic:
- We use ($i $j) % $n to wrap around to the beginning of the array when accessing indices greater than n - 1.
- Similarly, ($i - $j $n) % $n handles backward wrapping for negative indices.
Complexity:
- Time Complexity: O(n . |k|), where n is the size of the array and |k| is the absolute value of k.
- Space Complexity: O(n) for the result array.
Outputs:
The provided examples match the expected results. Let me know if you need further explanation or optimizations!
Contact Links
If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks ?. Your support would mean a lot to me!
If you want more helpful content like this, feel free to follow me:
The above is the detailed content of Defuse the Bomb. For more information, please follow other related articles on the PHP Chinese website!