题目链接
英文链接:https://leetcode.com/problems/adding-two-negabinary-numbers/
中文链接:https://leetcode-cn.com/problems/adding-two-negabinary-numbers/
题目详述
给出基数为 -2 的两个数 arr1
和 arr2
,返回两数相加的结果。
数字以 数组形式 给出:数组由若干 0 和 1 组成,按最高有效位到最低有效位的顺序排列。例如,arr = [1,1,0,1]
表示数字 (-2)^3 + (-2)^2 + (-2)^0 = -3
。数组形式 的数字也同样不含前导零:以 arr
为例,这意味着要么 arr == [0]
,要么 arr[0] == 1
。
返回相同表示形式的 arr1
和 arr2
相加的结果。两数的表示形式为:不含前导零、由若干 0 和 1 组成的数组。
示例:
1 | 输入:arr1 = [1,1,1,1,1], arr2 = [1,0,1] |
提示:
- 1 <= arr1.length <= 1000
- 1 <= arr2.length <= 1000
- arr1 和 arr2 都不含前导零
- arr1[i] 为 0 或 1
- arr2[i] 为 0 或 1
题目详解
大数加法的通用步骤如下:
- 从低位到高位模拟竖式加法。
- 相加后取模并处理进位。
- 去除前导零。
- 翻转结果。
再结合 LeetCode1017-负二进制转换 中进制转换的知识,解答本题就很容易了。
1 | public class LeetCode_01073 { |
- 同样,也可以运用位运算。
1 | public class LeetCode_01073 { |