美文网首页
29. 两数相除

29. 两数相除

作者: 小小尧 | 来源:发表于2019-06-16 11:51 被阅读0次
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    #标记是否为负
        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进制的或运算就是有1就为1

        quotient *= sign    #虽然题目说了不要用乘法,但是为了代码的简洁这里还是用了
        if quotient < -(2 ** 31) or quotient > 2 ** 31 - 1:
            return 2 ** 31 - 1
        else:
            return quotient
AC

相关文章

  • 29. 两数相除

    29. 两数相除 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法...

  • 29. 两数相除

    29.两数相除 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和...

  • LeetCode 29. 两数相除

    29. 两数相除 题目来源:https://leetcode-cn.com/problems/divide-two...

  • 29. 两数相除

    29. 两数相除 题目链接:https://leetcode-cn.com/problems/divide-two...

  • 29.两数相除

    题目****给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 m...

  • 29. 两数相除

  • 29. 两数相除

    一、题目 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mo...

  • 29. 两数相除

    自己解法 自己的解法,想着是不能乘除和mod的话,就只有用加减运算了,于是写了个循环减除法的解法,这个解法显然没通...

  • 29. 两数相除

  • 29.两数相除

    题目描述: 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 m...

网友评论

      本文标题:29. 两数相除

      本文链接:https://www.haomeiwen.com/subject/duowfctx.html