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.
For example, if 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 eithernum1 = 0ornum2 = 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 <= 105
Solutions
Solution 1: Simulation
We can directly simulate this process by repeatedly performing the following operations:
If \(\textit{num1} \ge \textit{num2}\), then \(\textit{num1} = \textit{num1} - \textit{num2}\);
Following the simulation process in Solution 1, we notice that if \(\textit{num1}\) is much larger than \(\textit{num2}\), each operation will only reduce the value of \(\textit{num1}\) slightly, leading to an excessive number of operations. We can optimize this process by directly adding the quotient of \(\textit{num1}\) divided by \(\textit{num2}\) to the answer in each operation, then taking the remainder of \(\textit{num1}\) divided by \(\textit{num2}\). This reduces the number of operations.
The time complexity is \(O(\log m)\), where \(m\) is the maximum of \(\textit{num1}\) and \(\textit{num2}\). The space complexity is \(O(1)\).