「每日LeetCode」2022年2月22日

本文最后更新于:2023年3月19日 晚上

2169.得到 0 的操作数

2169.得到 0 的操作数

Category Difficulty Likes Dislikes
algorithms Easy (78.09%) 3 -

Tags
Companies
给你两个 非负 整数 num1 和 num2 。
每一步 操作 中,如果 num1 >= num2 ,你必须用 num1 减 num2 ;否则,你必须用 num2 减 num1 。

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

返回使 num1 = 0 或 num2 = 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

思路

按题意模拟即可

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
* @lc app=leetcode.cn id=2169 lang=javascript
*
* [2169] 得到 0 的操作数
*/

// @lc code=start
/**
* @param {number} num1
* @param {number} num2
* @return {number}
*/
var countOperations = function (num1, num2) {
let count = 0;
while (num1 !== 0 && num2 !== 0) {
if (num1 >= num2) num1 -= num2;
else num2 -= num1;
count++;
}
return count;
};
// @lc code=end