There was an error while loading. Please reload this page.
1 parent dc20c7e commit c38fd0bCopy full SHA for c38fd0b
Math/1073.Adding-Two-Negabinary-Numbers/1073.Adding-Two-Negabinary-Numbers.cpp
@@ -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