Skip to content

Commit c38fd0b

Browse files
authored
Create 1073.Adding-Two-Negabinary-Numbers.cpp
1 parent dc20c7e commit c38fd0b

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
public:
3+
vector<int> addNegabinary(vector<int>& arr1, vector<int>& arr2)
4+
{
5+
reverse(arr1.begin(),arr1.end());
6+
reverse(arr2.begin(),arr2.end());
7+
int len = max(arr1.size(), arr2.size());
8+
int carry = 0;
9+
vector<int>ret;
10+
for (int i=0; i<len+2; i++)
11+
{
12+
int a = i>=arr1.size()? 0:arr1[i];
13+
int b = i>=arr2.size()? 0:arr2[i];
14+
int sum = a+b+carry;
15+
int r = sum%(-2);
16+
carry = sum/(-2);
17+
if (r<0)
18+
{
19+
carry+=1;
20+
r+=2;
21+
}
22+
ret.push_back(r);
23+
}
24+
while (ret.size()>0 && ret.back()==0) ret.pop_back();
25+
reverse(ret.begin(),ret.end());
26+
if (ret.size()==0) return {0};
27+
else return ret;
28+
}
29+
};

0 commit comments

Comments
 (0)