Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator.
Return the quotient after dividing dividend by divisor.
The integer division should truncate toward zero.
Example 1:
Input: dividend = 10, divisor = 3
Output: 3
Example 2:
Input: dividend = 7, divisor = -3
Output: -2
思路
通过加法复现除法,注意剪枝,不然超时,而且超过规定的边界要输出边界的值
code
class Solution:
def divide(self, dividend: int, divisor: int) -> int:
dividend1, divisor1 = abs(dividend), abs(divisor)
quotient = 0
while dividend1 >= divisor1:
temp, i = divisor1, 1
while dividend1 >= temp:
dividend1 -= temp
temp += temp
quotient += i
i += i
if (dividend < 0 and divisor > 0) or (dividend > 0 and divisor < 0):
quotient = -quotient
return min(max(quotient, -pow(2, 31)), pow(2, 31) - 1)