2020-02-20 14:52:41

问题描述:

问题求解:

最开始的想法是将两个数字先转化成自然数在求和,最后转化回去,但是实际上这种方案是不可取的,主要的问题就是会爆掉。

那么就得按位进行运算了。

进行位运算的时候最大的难点在于进位怎么获得。

显然,当sum = 0 / 1的时候,carry = 0;

当sum > 1的时候,carry = -1;

当sum < 0的时候,carry = 1;

sum = 0 -> carry = 0, result = 0

sum = 1 -> carry = 0, result = 1

sum = 2 -> carry = -1, result = 0

sum = 3 -> carry = -1, result = 1

sum = -1 -> carry = 1, result = 1

    public int[] addNegabinary(int[] arr1, int[] arr2) {
List<Integer> res = new ArrayList<>();
int len1 = arr1.length;
int len2 = arr2.length;
int carry = 0;
for (int i = 0; i < Math.max(len1, len2) || carry != 0; i++) {
int d1 = i < len1 ? arr1[len1 - 1 - i] : 0;
int d2 = i < len2 ? arr2[len2 - 1 - i] : 0;
int sum = d1 + d2 + carry;
res.add(Math.abs(sum) % 2);
if (sum > 1) carry = -1;
else if (sum < 0) carry = 1;
else carry = 0;
}
int idx = res.size() - 1;
while (idx >= 1) {
if (res.get(idx) == 0) idx -= 1;
else break;
}
int[] nums = new int[idx + 1];
while (idx >= 0) {
nums[nums.length - 1 - idx] = res.get(idx--);
}
return nums;
}

  

最新文章

  1. JDBC数据库1
  2. js 表单内容使用ajax以json格式混合提交
  3. winScp 跳板机到服务器
  4. DW(三):polybase基本理论
  5. C#- FTP递归下载文件
  6. java新手笔记8 包
  7. Longest Palindromic Substring -LeetCode
  8. 一步一步重写 CodeIgniter 框架 (7) —— Controller执行时将 Model获得的数据传入View中,实现MVC
  9. AES加密时抛出java.security.InvalidKeyException:&#160;Illegal&#160;key&#160;size&#160;or&#160;def
  10. wcf ServiceContract
  11. 04-从零玩转JavaWeb-JVM内存详情分析
  12. canvas动画3:交互
  13. Android Studio 错误 Duplicate files copied in APK META-INF/LICENSE.txt解决方案
  14. Java单例模式之最优解分析【为何说是最优解】
  15. King 差分约束 判负环
  16. Visual Studio 2017/2019 企业版 Enterprise 激活码
  17. android 圆角背景
  18. MacOS 10.12 Sierra 安全性与隐私没有任何来源选项解决方法
  19. python之requests urllib3 连接池
  20. STL算法中函数对象和谓词

热门文章

  1. uploadifive如何动态传参
  2. 脚本化处理linux云服务器第二硬盘初始化
  3. Python3——2019年全国大学生计算二级考试
  4. .ArrayList是如何实现的,ArrayList和LinkedList的区别?ArrayList如何实现扩容?
  5. sublime Text3 前端常用插件
  6. 【Geek议题】当年那些风骚的跨域操作
  7. [LeetCode] 994. Rotting Oranges 腐烂的橘子
  8. JZOJ 1775. 合并果子2 (Standard IO)
  9. JAVA生成EXCEL模板
  10. flask 密码加密 视频资料