python-leetcode-2169. 得到 0 的操作数

2169. 得到 0 的操作数 - 力扣(LeetCode)

这个问题可以通过模拟的方式解决,每次选择较大的数字减去较小的数字,直到其中一个数字变为零为止。

具体的步骤如下:

  1. 判断 num1 是否大于等于 num2,若是,则用 num1 减去 num2。

  2. 否则,用 num2 减去 num1。

  3. 每次操作都进行一次计数。

  4. 重复此过程,直到 num1 或 num2 为零。

这样可以通过不断循环来计算操作次数,直到某个数字为零。

可以编写一个简单的算法来实现这一过程:

def countOperations(num1: int, num2: int) -> int:
    count = 0
    while num1 > 0 and num2 > 0:
        if num1 >= num2:
            count += num1 // num2  # 每次用 num1 减去 num2,等效于 num1 除以 num2
            num1 = num1 % num2     # 更新 num1 为剩余部分
        else:
            count += num2 // num1  # 每次用 num2 减去 num1,等效于 num2 除以 num1
            num2 = num2 % num1     # 更新 num2 为剩余部分
    return count

解释:

  • num1 // num2 计算了在当前情况下,num1 可以减去 num2 的次数。

  • num1 % num2 更新了 num1 为减去相应次数后的剩余值。

  • 每次操作后,count 递增,直到其中一个数变为零。

示例:

  • 输入: num1 = 5, num2 = 4

    • 第一次操作后,num1 = 1, num2 = 4,计数加1。

    • 第二次操作后,num1 = 1, num2 = 3,计数加1。

    • 第三次操作后,num1 = 1, num2 = 2,计数加1。

    • 第四次操作后,num1 = 1, num2 = 1,计数加1。

    • 第五次操作后,num1 = 0, num2 = 1,计数加1。

    • 返回操作次数 5。

这个算法会在很短的时间内计算出操作的次数,符合题意。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值