这道题我的理解很简单,就是用相加替换乘除就可以了
可是
-2147483648
-1
测试案例不能通过
public static int Divide(int dividend, int divisor)
{
int dividends = Math.Abs(dividend);
int divisors = Math.Abs(divisor);
int count = 1;
int i = divisors;
for (; i < dividends; )
i += i;
count++;
if(dividend > 0 && divisor < 0|| dividend < 0 && divisor > 0)
{
count = -count;
}
return count;
}
参考下这个答案
public class Solution {
public int Divide(int dividend, int divisor) {
bool isPositive=true;
if(dividend<0&&divisor>0 || dividend>0&&divisor<0){
isPositive=false;
}
long ldividend = Math.Abs((long)dividend);
long ldivisor=Math.Abs((long)divisor);
long result=divide(ldividend,ldivisor);
if(result>int.MaxValue){
return isPositive?int.MaxValue:int.MinValue;
}
return isPositive?(int)result:-(int)result;
}
public long divide(long dividend,long divisor){
if(dividend<divisor) return 0;
long sum=divisor;
long result=1;
while(dividend>sum+sum){
sum +=sum;
result +=result;
}
return result+divide(dividend-sum,divisor);
}
}