Watch 10 video solutions for Count Operations to Obtain Zero, a easy level problem involving Math, Simulation. This walkthrough by NeetCodeIO has 3,075 views views. Want to try solving it yourself? Practice on FleetCode or read the detailed text solution.
You are given two non-negative integers num1 and num2.
In one operation, if num1 >= num2, you must subtract num2 from num1, otherwise subtract num1 from num2.
num1 = 5 and num2 = 4, subtract num2 from num1, thus obtaining num1 = 1 and num2 = 4. However, if num1 = 4 and num2 = 5, after one operation, num1 = 4 and num2 = 1.Return the number of operations required to make either num1 = 0 or num2 = 0.
Example 1:
Input: num1 = 2, num2 = 3 Output: 3 Explanation: - Operation 1: num1 = 2, num2 = 3. Since num1 < num2, we subtract num1 from num2 and get num1 = 2, num2 = 3 - 2 = 1. - Operation 2: num1 = 2, num2 = 1. Since num1 > num2, we subtract num2 from num1. - Operation 3: num1 = 1, num2 = 1. Since num1 == num2, we subtract num2 from num1. Now num1 = 0 and num2 = 1. Since num1 == 0, we do not need to perform any further operations. So the total number of operations required is 3.
Example 2:
Input: num1 = 10, num2 = 10 Output: 1 Explanation: - Operation 1: num1 = 10, num2 = 10. Since num1 == num2, we subtract num2 from num1 and get num1 = 10 - 10 = 0. Now num1 = 0 and num2 = 10. Since num1 == 0, we are done. So the total number of operations required is 1.
Constraints:
0 <= num1, num2 <= 105Problem Overview: You are given two integers num1 and num2. In one operation, subtract the smaller number from the larger one. Repeat until either value becomes zero. The task is to return the total number of operations performed.
Approach 1: Iterative Subtraction (Simulation) (Time: O(max(num1,num2)), Space: O(1))
This approach directly simulates the process described in the problem. While both numbers are non‑zero, compare them and subtract the smaller value from the larger one. After each subtraction, increment the operation counter. The loop stops when one of the values reaches zero.
The logic is straightforward: use a while loop and perform conditional subtraction (num1 -= num2 or num2 -= num1). This mirrors the problem statement exactly and is easy to reason about. The downside is performance when the numbers are very different in size. If num1 is much larger than num2, the loop may run many times because the subtraction happens one step at a time. This solution fits naturally under simulation since it models the operations exactly as defined.
Approach 2: Using Modulus Operation (Optimized Euclidean Idea) (Time: O(log(min(num1,num2))), Space: O(1))
Instead of subtracting the smaller value repeatedly, you can count how many times the subtraction would occur using division. If num1 > num2, then num1 -= num2 would happen num1 / num2 times before num1 becomes smaller than num2. Add that quotient to the operation count and replace num1 with num1 % num2.
This mirrors the logic behind the Euclidean algorithm used to compute the greatest common divisor. Each iteration reduces the larger number dramatically instead of step‑by‑step subtraction. The algorithm repeatedly swaps roles between the two numbers until one becomes zero. The result is significantly fewer iterations, giving logarithmic time complexity.
This technique relies on basic number properties from math and still behaves like a compressed form of simulation. In practice, it is the most efficient and elegant solution.
Recommended for interviews: Start by explaining the iterative subtraction simulation because it directly matches the problem statement and demonstrates clear reasoning. Then optimize it using the modulus observation. Interviewers typically expect the Euclidean-style optimization since it reduces the complexity from potentially linear operations to logarithmic time while keeping constant space.
| Approach | Time | Space | When to Use |
|---|---|---|---|
| Iterative Subtraction (Simulation) | O(max(num1, num2)) | O(1) | Best for understanding the problem mechanics or implementing a direct simulation |
| Modulus / Euclidean Optimization | O(log(min(num1, num2))) | O(1) | Preferred for large numbers and optimal interview solutions |