-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path29. Divide Two Integers.py
45 lines (40 loc) · 1.15 KB
/
29. Divide Two Integers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import sys
class Solution(object):
def divide(self, dividend, divisor):
"""
:type dividend: int
:type divisor: int
:rtype: int
"""
if divisor == 0:
return sys.maxint
if dividend == 0:
return 0
if dividend * divisor > 0:
flag = 1
else :
flag = 0
dividend = dividend.__abs__()
divisor = divisor.__abs__()
tmp = dividend
result = 0
while True:
result_tmp = 1
if tmp < divisor:
if flag == 0:
result = -result
if result > sys.maxint:
return sys.maxint
return result
cur_divisor = divisor
while tmp >= cur_divisor:
cur_divisor = cur_divisor << 1
result_tmp = result_tmp << 1
result_tmp = result_tmp >> 1
result = result + result_tmp
cur_divisor = cur_divisor >> 1
tmp = tmp - cur_divisor
if __name__ == "__main__":
solution = Solution()
re = solution.divide(-2147483648,-1)
print re