Adding Two Negabinary Numbers — LeetCode 1073 Python Solution
- Problem
- #1073
- Pattern
- Math and Number Theory
- Reading time
- 4 min
- Source
- leetcode.com
The problem
Given two numbers arr1 and arr2 in base -2, return the result of adding them together. Each number is given in array format: as an array of 0s and 1s, from most significant bit to least significant bit.
Example
- Input
- arr1 = [1,1,1,1,1], arr2 = [1,0,1]
- Output
- [1,0,0,0,0]
- Explanation
- arr1 represents 11, arr2 represents 5, the output represents 16.
Python solution
class Solution:
def addNegabinary(self, arr1: List[int], arr2: List[int]) -> List[int]:
i, j = len(arr1) - 1, len(arr2) - 1
c = 0
ans = []
while i >= 0 or j >= 0 or c:
a = 0 if i < 0 else arr1[i]
b = 0 if j < 0 else arr2[j]
x = a + b + c
c = 0
if x >= 2:
x -= 2
c -= 1
elif x == -1:
x = 1
c += 1
ans.append(x)
i, j = i - 1, j - 1
while len(ans) > 1 and ans[-1] == 0:
ans.pop()
return ans[::-1]Complexity
| Measure | Complexity |
|---|---|
| Time | O(n) or O(1) |
| Space | O(1) auxiliary |
Pattern: Math and Number Theory
Find the closed form, the invariant, or the modular identity — and skip the loop entirely. LeetCode 1073. Adding Two Negabinary Numbers is filed here on both counts: the reference solution below belongs to the algorithm family this hub collects, and LeetCode tags it Math.
The math and number theory guide has the Python template for the pattern and the 485 LeetCode problems that use it.
Related problems
Frequently asked questions
- How hard is LeetCode 1073. Adding Two Negabinary Numbers?
- LeetCode 1073. Adding Two Negabinary Numbers is rated Medium on LeetCode.
- What topics does LeetCode 1073. Adding Two Negabinary Numbers cover?
- LeetCode 1073. Adding Two Negabinary Numbers is tagged Array and Math on LeetCode.