Adding Two Negabinary Numbers LeetCode solution in Python

1
class Solution:
2
def addNegabinary(self, arr1: List[int], arr2: List[int]) -> List[int]:
3

4
//final answer
5
new = []
6
carry = 0
7

8
//make arrays length equal
9
if len(arr1) < len(arr2):
10
diff = len(arr2) - len(arr1)
11
arr1 = ([0] * diff) + arr1
12

13
if len(arr1) > len(arr2):
14
diff = len(arr1) - len(arr2)
15
arr2 = ([0] * diff) + arr2
16

17

18

19
//add values at every index and set carry and new value appropriately
20
while arr1 and arr2:
21

22
top = arr1.pop()
23
down = arr2.pop()
24

25
add = top + down + carry
26

27
if add == -1:
28
new = [1] + new
29
carry = 1
30

31
elif add == 1 or add == 0:
32
new = [add] + new
33
carry = 0
34

35
elif add == 2:
36
new = [0] + new
37
carry = -1
38

39
else:
40
new = [1] + new
41
carry = -1
42

43
// if carry -1 add 1 1 since -1 is 11 in negabinary
44
if carry == -1:
45
new = [1,1] + new
46

47
//remove any leading zeros
48
while new[0] == 0 and len(new) >1:
49
new = new[1:]
50

51
return new

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0