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))