445. 两数相加 II

给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。

你可以假设除了数字 0 之外,这两个数字都不会以零开头。

进阶:

如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。

示例:

输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)

输出: 7 -> 8 -> 0 -> 7

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
//栈
LinkedList<Integer> s1 = new LinkedList<>();
LinkedList<Integer> s2 = new LinkedList<>();
while(l1 != null) {
s1.addFirst(l1.val);
l1 = l1.next;
}
while(l2 != null) {
s2.addFirst(l2.val);
l2 = l2.next;
}
int carry = 0;
ListNode lastNode = null;
while(!s1.isEmpty() || !s2.isEmpty()) {
int a1 = 0, a2 = 0;
if(!s1.isEmpty()) {
a1 = s1.removeFirst();
}
if(!s2.isEmpty()) {
a2 = s2.removeFirst();
}
ListNode curNode = new ListNode((a1 + a2 + carry) % 10);
carry = (a1 + a2 + carry) / 10;
curNode.next = lastNode;
lastNode = curNode;
}
if(carry > 0) {
ListNode curNode = new ListNode(carry);
curNode.next = lastNode;
lastNode = curNode;
}
return lastNode;
}
}

最新文章

  1. Android基于mAppWidget实现手绘地图(十四)–在一个应用中使用多个地图
  2. WebStorm9
  3. DB2物化表
  4. linux下mysql的root密码忘记解决方
  5. bjfu1208 中位数
  6. Be Sociable, Share!
  7. NOI2015 小园丁与老司机
  8. Cocos2d-X中实现菜单特效
  9. 解决Eclipse下第三方库无法导航源代码
  10. python 识别图片上的数字
  11. 整合多个网络的拓扑结构并降维(Mashup)
  12. 学习git踩坑之路
  13. OpenCV——图像的深度与通道数讲解
  14. java 异常链
  15. annovar积累
  16. 算法笔记_145:拓扑排序的应用(Java)
  17. 【Java实战】DecimalFormat对数值格式化的舍入问题——RoundingMode
  18. Ubuntu系统下安装并配置hive-2.1.0
  19. 限制printk打印频率函数printk_ratelimit【转】
  20. C++ 学习使用

热门文章

  1. hex文件格式总结
  2. 在一段字符串中的指定位置插入html标签,实现内容修改留痕
  3. docker部署微服务遇到的问题二
  4. CSS之未知高度img垂直居中
  5. 2018-06-27 jq文档处理与jq对象属性操作
  6. Docker &amp; k8s 系列二:本机k8s环境搭建
  7. 将mat文件中的数据按要求保存到txt文档中(批处理)
  8. Zabbix-部署
  9. 微信小程序跑步计时器
  10. redis 主从哨兵01