Skip to content

Instantly share code, notes, and snippets.

@wushbin
Created April 1, 2020 04:43
Show Gist options
  • Select an option

  • Save wushbin/bf7aae6acf163fb49ef3b3bdac064972 to your computer and use it in GitHub Desktop.

Select an option

Save wushbin/bf7aae6acf163fb49ef3b3bdac064972 to your computer and use it in GitHub Desktop.
class Solution {
public int[] addNegabinary(int[] arr1, int[] arr2) {
List<Integer> list = new ArrayList<>();
int pt1 = arr1.length - 1;
int pt2 = arr2.length - 1;
int carrier = 0;
while(pt1 >= 0 || pt2 >= 0) {
int num1 = pt1 >= 0 ? arr1[pt1] : 0;
int num2 = pt2 >= 0 ? arr2[pt2] : 0;
int sum = num1 + num2 + carrier;
if (sum == -1) {
sum = 1;
carrier = 1;
} else {
carrier = - (sum / 2);
sum %= 2;
}
list.add(sum);
pt1 --;
pt2 --;
}
while (carrier != 0) {
int sum = carrier;
if (sum == -1) {
sum = 1;
carrier = 1;
} else {
carrier = - (sum / 2);
sum %= 2;
}
list.add(sum);
}
int idx = list.size() - 1;
while(idx > 0 && list.get(idx) == 0) {
idx--;
}
int[] result = new int[idx + 1];
for (int i = 0; i <= idx; i++) {
result[i] = list.get(idx - i);
}
return result;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment