# Time: O(logn) = O(1) # Space: O(1) # # Divide two integers without using multiplication, division and mod operator.
class Solution(): def divide(self, dividend, divisor): positive = (dividend < 0) is (divisor < 0) dividend, divisor = abs(dividend), abs(divisor) res = 0 while dividend >= divisor: temp, i = divisor, 1 while dividend >= temp: dividend -= temp res += i i <<= 1 temp <<= 1 if not positive: res = -res return min(max(-2**31, res), 2**31-1) if __name__ == "__main__": assert Solution().divide(123, 12) == 10 assert Solution().divide(123, -12) == -10 assert Solution().divide(-123, 12) == -10 assert Solution().divide(-123, -12) == 10
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句