29. Divide Two Integers
Input: dividend = 10, divisor = 3
Output: 3Input: dividend = 7, divisor = -3
Output: -2// Bit Manipulation
int divide(int dividend, int divisor) { // time: O(log(m)); space: O(1)
if (divisor == 0 || (dividend == INT_MIN && divisor == -1)) return INT_MAX;
int sign = (dividend > 0) ^ (divisor > 0) ? -1 : 1;
long m = labs(dividend), n = labs(divisor), res = 0;
while (m >= n) {
long tmp = n, cnt = 1;
while (m >= (tmp << 1)) {
tmp <<= 1;
cnt <<= 1;
}
m -= tmp;
res += cnt;
}
return sign == 1 ? res : -res;
}Last updated