#2772

Apply Operations to Make All Array Elements Equal to Zero

Medium
ArrayPrefix SumGreedySliding Window
LeetCode ↗

Approaches

Brute ForceOptimal
Complexity Comparison
Brute ForceOptimal Solution
Time
O(n²)
O(n)
Space
O(1)
O(1)
💡

Intuition

Time O(n)Space O(1)

The optimal solution uses a greedy approach to ensure that we can reduce elements to zero by maintaining a running total of decrements applied to each element. This allows us to determine if we can make all elements zero without explicitly modifying the array.

⚙️

Algorithm

4 steps
  1. 1Step 1: Initialize a variable to track the total decrements applied so far.
  2. 2Step 2: Loop through the array and for each element, calculate the effective value after considering the total decrements.
  3. 3Step 3: If the effective value is greater than the number of decrements that can be applied from that index to the next k elements, return false.
  4. 4Step 4: Update the total decrements and continue until the end of the array.
solution.py11 lines
1def canMakeAllZero(nums, k):
2    n = len(nums)
3    total_decrements = 0
4    for i in range(n):
5        if i >= k:
6            total_decrements -= nums[i - k]
7        if nums[i] - total_decrements > 0:
8            total_decrements += nums[i] - total_decrements
9            if total_decrements > nums[i]:
10                return False
11    return True

Complexity note: The time complexity is O(n) because we make a single pass through the array, and the space complexity is O(1) since we only use a few extra variables.

  • 1The order of operations matters; always apply decrements from left to right.
  • 2If an element cannot be reduced to zero due to insufficient decrements, return false.

Solutions and explanations are original Tejav content. Problem titles © LeetCode — use the LeetCode button above for the full problem statement.