leetcode29 Divide Two Integers
1 """ 2 Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator. 3 Return the quotient after dividing dividend by divisor. 4 The integer division should truncate toward zero. 5 Example 1: 6 Input: dividend = 10, divisor = 3 7 Output: 3 8 Example 2: 9 Input: dividend = 7, divisor = -3 10 Output: -2 11 """ 12 """ 13 正确答案,先减第一个,再减double 14 """ 15 class Solution: 16 def divide(self, dividend: int, divisor: int) -> int: 17 res = 0 18 positive = (dividend < 0) is (divisor < 0) 19 dividend = abs(dividend) 20 divisor = abs(divisor) 21 while dividend >= divisor: 22 temp, i = divisor, 1 23 while dividend >= temp: #多加了一层循环,是为了避免超时 24 res += i 25 dividend -= temp 26 i = 2*i 27 temp = 2*temp 28 if not positive: 29 res = - res 30 return min(max(-2147483648, res), 2147483647) #!!!这个范围限制很巧妙 31 32 """ 33 我的答案,一个一个减会超时 34 """ 35 class Solution: 36 def divide(self, dividend, divisor): 37 neg = 0 38 res = 0 39 if dividend > 0 and divisor < 0 or divisor > 0 and dividend < 0: 40 neg = 1 41 dividend = abs(dividend) 42 divisor = abs(divisor) 43 while dividend >= divisor: 44 dividend = dividend - divisor 45 res += 1 46 if neg: 47 res = - res 48 return min(max(-2147483648, res), 2147483647)