class Solution(object):
def divide(self, dividend, divisor):
"""
:type dividend: int
:type divisor: int
:rtype: int
"""
if dividend == 0: return 0
if divisor == 0: return
sign = -1 if ((dividend < 0) ^ (divisor < 0)) else 1 #標(biāo)記是否為負(fù)
dividend = abs(dividend)
divisor = abs(divisor)
quotient = 0
tmp = 0
for i in range(32,-1,-1): #逆序枚舉诡宗,范圍為[0,32]
if tmp + (divisor << i) <= dividend:
tmp += divisor << i #更新tmp的值
quotient |= 1 << i #記錄i的位置掸掸,從2進(jìn)制的或運(yùn)算就是有1就為1
quotient *= sign #雖然題目說了不要用乘法吧兔,但是為了代碼的簡潔這里還是用了
if quotient < -(2 ** 31) or quotient > 2 ** 31 - 1:
return 2 ** 31 - 1
else:
return quotient
AC