LeetCode 题解工作台

得到 0 的操作数

给你两个 非负 整数 num1 和 num2 。 每一步 操作 中,如果 num1 >= num2 ,你必须用 num1 减 num2 ;否则,你必须用 num2 减 num1 。 例如, num1 = 5 且 num2 = 4 ,应该用 num1 减 num2 ,因此,得到 num1 = 1 和 …

category

2

题型

code_blocks

7

代码语言

hub

3

相关题

当前训练重点

简单 · 数学·结合·模拟

bolt

答案摘要

我们可以直接模拟这个过程,循环执行以下操作: - 如果 $\textit{num1} \ge \textit{num2}$,则 $\textit{num1} = \textit{num1} - \textit{num2}$;

Interview AiBox logo

Interview AiBox 实时 AI 助手,陪你讲清 数学·结合·模拟 题型思路

试试 AiBox 面试助手arrow_forward
description

题目描述

给你两个 非负 整数 num1num2

每一步 操作 中,如果 num1 >= num2 ,你必须用 num1num2 ;否则,你必须用 num2num1

  • 例如,num1 = 5num2 = 4 ,应该用 num1num2 ,因此,得到 num1 = 1num2 = 4 。然而,如果 num1 = 4num2 = 5 ,一步操作后,得到 num1 = 4num2 = 1

返回使 num1 = 0num2 = 0操作数

 

示例 1:

输入:num1 = 2, num2 = 3
输出:3
解释:
- 操作 1 :num1 = 2 ,num2 = 3 。由于 num1 < num2 ,num2 减 num1 得到 num1 = 2 ,num2 = 3 - 2 = 1 。
- 操作 2 :num1 = 2 ,num2 = 1 。由于 num1 > num2 ,num1 减 num2 。
- 操作 3 :num1 = 1 ,num2 = 1 。由于 num1 == num2 ,num1 减 num2 。
此时 num1 = 0 ,num2 = 1 。由于 num1 == 0 ,不需要再执行任何操作。
所以总操作数是 3 。

示例 2:

输入:num1 = 10, num2 = 10
输出:1
解释:
- 操作 1 :num1 = 10 ,num2 = 10 。由于 num1 == num2 ,num1 减 num2 得到 num1 = 10 - 10 = 0 。
此时 num1 = 0 ,num2 = 10 。由于 num1 == 0 ,不需要再执行任何操作。
所以总操作数是 1 。

 

提示:

  • 0 <= num1, num2 <= 105
lightbulb

解题思路

方法一:模拟

我们可以直接模拟这个过程,循环执行以下操作:

  • 如果 num1num2\textit{num1} \ge \textit{num2},则 num1=num1num2\textit{num1} = \textit{num1} - \textit{num2}
  • 否则,num2=num2num1\textit{num2} = \textit{num2} - \textit{num1}
  • 每执行一次操作,操作数加一。

num1\textit{num1}num2\textit{num2} 有一个为 00 时,停止循环,返回操作数。

时间复杂度 O(m)O(m),其中 mmnum1\textit{num1}num2\textit{num2} 的最大值。空间复杂度 O(1)O(1)

1
2
3
4
5
6
7
8
9
10
11
class Solution:
    def countOperations(self, num1: int, num2: int) -> int:
        ans = 0
        while num1 and num2:
            if num1 >= num2:
                num1 -= num2
            else:
                num2 -= num1
            ans += 1
        return ans
speed

复杂度分析

指标
时间complexity can vary depending on the approach, but a direct simulation results in linear time proportional to the values of num1 and num2. Optimized approaches might reduce this to logarithmic time in some cases, especially when division is used to jump over multiple steps.
空间Depends on the final approach
psychology

面试官常问的追问

外企场景
  • question_mark

    Tests understanding of basic simulation techniques.

  • question_mark

    Evaluates efficiency considerations in problem-solving.

  • question_mark

    Looks for correct handling of edge cases and optimized solutions.

warning

常见陷阱

外企场景
  • error

    Failing to consider edge cases, such as when either num1 or num2 is already zero.

  • error

    Overcomplicating the solution when a simple simulation is sufficient.

  • error

    Not optimizing the process for larger values of num1 and num2.

swap_horiz

进阶变体

外企场景
  • arrow_right_alt

    Consider handling larger inputs efficiently using mathematical shortcuts.

  • arrow_right_alt

    Modify the problem to count operations to reach a specific value other than zero.

  • arrow_right_alt

    Introduce a constraint that only allows subtraction in certain conditions, altering the simulation.

help

常见问题

外企场景

得到 0 的操作数题解:数学·结合·模拟 | LeetCode #2169 简单