您的位置:首页 > 其它

LEETCODE: Divide Two Integers

2014-12-15 00:00 351 查看
Divide two integers without using multiplication, division and mod operator.

If it is overflow, return MAX_INT.

class Solution {
public:
int divide(int dividend, int divisor) {
if(dividend == INT_MIN && divisor == -1) return INT_MAX;
int sign = 1;
if(dividend < 0)
sign *= -1;
if(divisor < 0)
sign *= -1;

long long big = abs((long long)dividend);
long long small = abs((long long)divisor);
long long temp = small;
long long midres = 1;
while(temp < big)
{
temp <<= 1;
midres <<= 1;
}

int ret = 0;
while(temp >= small)
{
while(big >= temp)
{
big -= temp;
ret += midres;
}
temp >>= 1;
midres >>= 1;
}
return ret*sign;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息