题目要求
哎,这要求还挺多的
思路
为了加速运算,可以依次将被除数减去1,2,4,8,..倍的除数。所以这里可以用移位来进一步加速
代码
class Solution:
def divide(self, dividend, divisor):
"""
:type dividend: int
:type divisor: int
:rtype: int
"""
# 最大整数
MAX_INT = 2147483647
# 判断整数负数
isPositive = -1 if ((dividend > 0 and divisor < 0) or (dividend < 0 and divisor > 0)) else 1
# 将两位数都转化为正数
dividend,divisor = abs(dividend),abs(divisor)
if dividend < divisor:
return 0
ans = 0
while dividend >= divisor:
cnt = 1
tmp = divisor
while tmp << 2 < dividend:
cnt <<= 2
tmp <<= 2
ans += cnt
dividend -= tmp
ans = isPositive*ans
if ans > MAX_INT:
return MAX_INT
return ans
运行结果
989 / 989 test cases passed.
Status: Accepted
Runtime: 56 ms