题目
- 被除数和除数均为 32 位有符号整数。
- 除数不为 0。
- 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]。本题中,如果除法结果溢出,则返回 2^31 − 1。
【代码】
执行用时:32 ms, 在所有 Python3 提交中击败了94.79% 的用户
内存消耗:14.7 MB, 在所有 Python3 提交中击败了99.67% 的用户
通过测试用例:992 / 992
class Solution:
def divide(self, dividend: int, divisor: int) -> int:
flag=-1 if ((dividend>0)^(divisor>0)) else 1
dividend=abs(dividend)
divisor=abs(divisor)
k=31
cnt=0
while k>=0:
while k>=0 and (dividend-(divisor<<k))<0:
k-=1
if k>=0:
dividend-=(divisor<<k)
cnt+=1<<k
if flag<0:
cnt=-cnt
return min(cnt,2**31-1)