您的位置:首页 > 理论基础 > 计算机网络

https://leetcode.com/problems/divide-two-integers/

2015-04-22 12:36 357 查看
https://leetcode.com/problems/divide-two-integers/

不许用乘除计算除法 最开始想用减法 但是想想就知道会超时 

位运算可以相当于*2来用 

还要考虑正负的问题 

另外溢出也要考虑 因为MIN_INT和MAX_INT仅数值相比 要大一 MIN做完除法变成MAX时会溢出

class Solution:
# @param dividend, an integer
# @param divisor, an integer
# @return an integer
def getnumber(self,dividend, divisor):
n=0
while dividend>=divisor+divisor:
divisor=divisor<<1
n=n+1
return n
def divide(self, dividend, divisor):
solution=0
n=0
up=1
down=1
MAX_INT=2147483647
if dividend<0:
up=-1
if divisor<0:
down=-1
if dividend==0:
return 0
if divisor==0:
return False
if up==down:
sign=1
else:
sign=-1
dividend=abs(dividend)
divisor=abs(divisor)
while  dividend>divisor:
n=Solution().getnumber(dividend, divisor)
solution=solution+2**n
dividend=dividend-(divisor<<n)
if dividend==divisor:
solution=solution+1
if up!=down:
solution=0-solution
if solution>MAX_INT:
solution=MAX_INT
return solution
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: