29. Divide Two Integers
Given two integers dividend
and divisor
, divide two integers without using *,/, % operator.
The integer division should truncate toward zero, which means losing its fractional part. For example, 8.345
would be truncated to 8
, and -2.7335
would be truncated to -2
. Return the quotient after dividing dividend
by divisor
.
def divide(dividend: int, divisor: int):
if (dividend == -2147483648 and divisor == -1):
return 2147483647;
n1, n2 = False, False
if dividend <0:
dividend = -dividend
n1 = True
if divisor <0:
divisor = -divisor
n2 = True
neg = n1 != n2
res = 0
while dividend >= divisor:
growing = divisor
power = 1
while (growing << 1) < dividend:
growing = growing << 1
power = power << 1
dividend -= growing
res += power
return -res if neg else res
Comments
Post a Comment