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


这个问题可以通过模拟的方式解决,每次选择较大的数字减去较小的数字,直到其中一个数字变为零为止。
具体的步骤如下:
-
判断 num1 是否大于等于 num2,若是,则用 num1 减去 num2。
-
否则,用 num2 减去 num1。
-
每次操作都进行一次计数。
-
重复此过程,直到 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。
-
这个算法会在很短的时间内计算出操作的次数,符合题意。
520

被折叠的 条评论
为什么被折叠?



