【算法热题】29. 两数相除

题目

  • 被除数和除数均为 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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值