题目
29 两数相除
解题思路: 基于位运算实现,注意边界处理
代码记录
class Solution:
def divide(self, dividend: int, divisor: int) -> int:
MAX = 2147483648
flag = -1 if (dividend>0 and divisor<0) or (dividend<0 and divisor>0) else 1
ans = 0
shift = 31 if flag==-1 else 30
a,b = abs(dividend),abs(divisor)
while shift>=0:
if a >= b<<shift:
a -= b<<shift
ans += 1<<shift
shift -= 1
ans *= flag
if ans > MAX-1:
ans = MAX-1
elif ans < -MAX:
ans = -MAX
return ans