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

Popular posts from this blog

849. Maximize Distance to Closest Person

347. Top K Frequent Elements

139. Word Break