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)
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)
相关文章推荐
- [Leetcode]29. Divide Two Integers @python
- 【LeetCode】29. Divide Two Integers
- leetcode 29. Divide Two Integers
- [leetcode 29] Divide Two Integers
- leetcode 29. Divide Two Integers
- leetCode 29.Divide Two Integers (两整数相除) 解题思路和方法
- LeetCode(29)Divide Two Integers
- leetcode 29. Divide Two Integers
- LeetCode *** 29. Divide Two Integers(binary search)
- leetcode 29.Divide Two Integers
- 【leetcode】29. Divide Two Integers
- leetcode 29:Divide Two Integers
- Leetcode (29) Divide Two Integers
- LeetCode --- 29. Divide Two Integers
- 【LeetCode 29】Divide Two Integers
- leetcode 29 - Divide Two Integers
- LeetCode 29 Divide Two Integers
- 【leetcode】【29】Divide Two Integers
- leetcode ——29——Divide Two Integers
- [LeetCode] 29. Divide Two Integers