给定两个非负整数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。Return the number of operations required to make either num1 = 0 or num2 = 0.
我试图在leetcode上做这个问题。我取一个count=0,然后取一个while循环,最终执行基本逻辑来计数操作的数量,其中一个给定的操作减少到0。但是为什么我在运行以下代码时会遇到时间限制呢?
这是我的代码
class Solution {
public int countOperations(int num1, int num2) {
int count =0;
while(num1>=0 && num2>=0){
if(num1>=num2){
num1=num1-num2;
count++;
}else{
num2=num2-num1;
count++;
}
}
return count;
}
}
2条答案
按热度按时间rdrgkggo1#
while循环的条件不正确。
只要两个数字都大于0,就必须执行算法。
只要两个数字都是0或更大,代码就会运行。这将永远不会终止,因为这意味着num1和num2必须变为负数。
相反,只要有一个数字为0,就必须结束循环。
arknldoa2#
你的两个参数将满足你的条件时,他们运行