Divide Two Integers

此题的最优解思路就是通过比特位操作位移除数来找我们能减掉多少个除数并统计下来

class Solution(object):
    def divide(self, dividend, divisor):
        """
        :type dividend: int
        :type divisor: int
        :rtype: int
        """
        sign = (dividend > 0) is (divisor > 0)
        dividend, divisor = abs(dividend), abs(divisor)
        result = 0

        while dividend >= divisor:
            tempDivisor, i = divisor, 1
            while dividend >= tempDivisor:
                dividend -= tempDivisor
                result += i
                i = i << 1
                tempDivisor = tempDivisor << 1

        if not sign:
            result *= -1
        return min(2 ** 31 - 1, max(-2 ** 31, result))

results matching ""

    No results matching ""