您的位置:首页 > 编程语言 > Python开发

LeetCode 29. Divide Two Integers

2016-10-25 09:18 429 查看
题目:

Divide two integers without using multiplication, division and mod operator.

If it is overflow, return MAX_INT.
题意:
计算2个整数相除,不能使用乘法、除法、以及取模

题解:

一开始自己累加求解,然后超时了。

看了后面discuss部分,可以使用移位操作,

减少计算次数。

class Solution(object):
def divide(self, dividend, divisor):
"""
:type dividend: int
:type divisor: int
:rtype: int
"""
if (dividend>0 and divisor>0) or (dividend<0 and divisor<0):
flag = 1
else:
flag = 0
if divisor ==0:
return -1
dividend, divisor = abs(dividend), abs(divisor)
res = 0
while dividend >= divisor:
temp, i = divisor, 1
while dividend >= temp:
dividend -= temp
res += i
i <<= 1
temp <<= 1
if flag == 0:
res = -res
return min(max(-2147483648, res), 2147483647)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python leetcode