29. Divide Two Integers
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) {
bool flag = true;
if (dividend == INT_MIN && divisor == -1) return INT_MAX;
if (divisor == 1) return dividend;
if (divisor < 0 && dividend > 0 || divisor > 0 && dividend < 0)
flag = false;
long long a = fabs(dividend);
long long b = fabs(divisor);
if(a < b)
return 0;
long long ans = 0;
while(a > b){
long long cur = 1;
long long c = b;
while(a > (c << 1)){
c = c << 1;
cur += cur;
}
ans += cur;
a -= c;
}
while(a >= b){
a -= b;
ans ++;
}
if(flag)
return ans;
else
return -ans;
}
};
990



被折叠的 条评论
为什么被折叠?



