题目:
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 (divisor == 0 || (dividend == INT_MAX + 1 && divisor == -1))return INT_MAX;
int sign = ((dividend>0) ^ (divisor>0)) ? -1 : 1;
long long dvd = labs(dividend),dvs = labs(divisor);
int res = 0;
while (dvd >= dvs) {
long long tmp = dvs, bit = 1;
while (dvd >= (tmp << 1)) {
tmp <<= 1;
bit <<= 1;
}
res += bit;
dvd -= tmp;
}
return sign == 1 ? res : -res;
}
};