给定两个整数,被除数 dividend
和除数 divisor
。将两数相除,要求不使用乘法、除法和 mod 运算符。
返回被除数 dividend
除以除数 divisor
得到的商。
说明:
- 被除数和除数均为 32 位有符号整数。
- 除数不为 0。
- 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。本题中,如果除法结果溢出,则返回 231 − 1。
这个题我刚开始想到了加减法,写了一下突然感觉用数组很简单,代码如下:
class Solution:
def divide(self, fenzi, fenmu):
"""
:type dividend: int
:type divisor: int
:rtype: int
"""
flag = -1 if (fenzi <0 and fenmu >0) or (fenzi>0 and fenmu<0) else 1#定义一个flag判断正负
fenzi,fenmu = abs(fenzi),abs(fenmu)
if fenzi <fenmu:
return 0
if fenzi ==fenmu:
return flag
if fenmu ==1:#防止2**31
return flag*fenzi if flag*fenzi < 2**31 else 2**31-1
return flag*len(range(fenmu,fenzi,fenmu))