Problem:
Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
Solution:class Solution {
public:
int divide(int dividend, int divisor) {
if ((dividend == INT_MIN && divisor == -1) || divisor == 0)
return INT_MAX;;
long long dvd = labs(dividend), dvs = labs(divisor);
int res = 0;
while (dvd >= dvs) {
long long temp = dvs, multiple = 1;
while (dvd >= (temp << 1)) {
temp <<= 1;
multiple <<= 1;
}
dvd -= temp;
res += multiple;
}
if (dividend >> 31 != divisor >> 31)
res = -res;
return res;
}
};