您的位置:首页 > 其它

Leetcode 29. Divide Two Integers

2018-01-31 08:49 471 查看
原题:

Divide two integers without using multiplication, division and mod operator.

If it is overflow, return MAX_INT.

解决方法:
除法的实现,关键在于大循环中的小循环,通过往左移1位倍增被除数来加快速度。

代码:
int divide(int dividend, int divisor) {
if (!divisor || (dividend==INT_MIN && divisor==-1))
return INT_MAX;
int flag = ((dividend < 0) ^ (divisor < 0)) ? -1 : 1;
long dvd = labs(dividend);
long dvs = labs(divisor);
int res = 0;
while(dvd >= dvs){
long temp = dvs;
int multiple = 1;
while(dvd>=(temp <<1)){
temp <<= 1;
multiple <<= 1;
}

res += multiple;
dvd -= temp;
}

return res * flag;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Leetcode