Divide Two Integers LeetCode solution in Python

1
class Solution:
2
def divide(self, dividend: int, divisor: int) -> int:
3
# Solution 1 - bitwise operator <<
4
"""
5
positive = (dividend < 0) is (divisor < 0)
6
dividend, divisor = abs(dividend), abs(divisor)
7
if divisor == 1:
8
quotient = dividend
9
else:
10
quotient = 0
11
while dividend >= divisor:
12
temp, i = divisor, 1
13
while dividend >= temp:
14
dividend -= temp
15
quotient += i
16
i <<= 1
17
temp <<= 1
18

19
if not positive:
20
return max(-2147483648, -quotient)
21
else:
22
return min(quotient, 2147483647)
23
"""
24
# Solution 2 - cumulative sum - faster than bitwise
25
positive = (dividend < 0) == (divisor < 0)
26
dividend, divisor = abs(dividend), abs(divisor)
27
if divisor == 1:
28
quotient = dividend
29
else:
30
quotient = 0
31
_sum = divisor
32

33
while _sum <= dividend:
34
current_quotient = 1
35
while (_sum + _sum) <= dividend:
36
_sum += _sum
37
current_quotient += current_quotient
38
dividend -= _sum
39
_sum = divisor
40
quotient += current_quotient
41
if not positive:
42
return max(-2147483648, -quotient)
43
else:
44
return min(quotient, 2147483647)

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0