描述:

给定两个非空的链表,表示两个非负整数。数字以相反的顺序存储,每个节点包含一个数字。添加两个数字并将其作为链表返回。

您可以假设两个数字不包含任何前导零,除了数字0本身。

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

类似于:342+564 = 807

LeetCode解决方案:

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummyHead = new ListNode(0);
ListNode p = l1, q = l2, curr = dummyHead;
int carry = 0;
while (p != null || q != null) {
int x = (p != null) ? p.val : 0;
int y = (q != null) ? q.val : 0;
int sum = carry + x + y;
carry = sum / 10;
curr.next = new ListNode(sum % 10);
curr = curr.next;
if (p != null) p = p.next;
if (q != null) q = q.next;
}
if (carry > 0) {
curr.next = new ListNode(carry);
}
return dummyHead.next;
}

我的方法:

class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummyHead = new ListNode(0);
ListNode p = l1, q = l2, curr = dummyHead;
int carry = 0;
while (true) {
//做相加
int x = (p != null) ? p.val : 0;
int y = (q != null) ? q.val : 0;
int sum = carry + x + y;
curr.val = sum % 10;
//重新赋值carry、p、q和curr
carry = sum / 10; if (p != null) p = p.next;
if (q != null) q = q.next;
if(p == null && q == null) break; curr.next = new ListNode(0);
curr = curr.next; }
if (carry > 0) {
curr.next = new ListNode(carry);
}
return dummyHead;
}
}

最新文章

  1. 服务器一般达到多少qps比较好[转]
  2. 也来说说C/C++里的volatile关键字
  3. jQuery原生框架-----------------dom操作
  4. canvas beginPath()
  5. MySQL的学习--用户创建授权
  6. const int * p 和 int const * p 和 int * const p 的区别
  7. Android SDK Manager 在win8.1上的闪退问题
  8. C# == equals 本质理解
  9. Ubuntu下jdk配置
  10. Linux select TCP并发服务器与客户端编程
  11. iOS开发实现登陆
  12. ZOJ 3326 An Awful Problem 模拟
  13. php中常用的字符串长度函数strlen()与mb_strlen()实例解释
  14. 简单的sql调优(批处理)
  15. Elasticsearch大规模时序索引如何治理和规划
  16. windows eclipse直接访问远程linux hadoop开发环境配置(符合实际开发的做法)
  17. 从Kubernetes到“云原生全家桶”,网易如何让业务部署提效280%?
  18. tensorflow笔记:多层LSTM代码分析
  19. eclipse default handler IHandler interface “the chosen operation is not enabled”
  20. Weekly linux and ConferenceByYear(2002-now)

热门文章

  1. ORALCE表的约束条件
  2. Spring Security学习笔记(三)
  3. QQ空间运营 怎么做一个QQ人气号?
  4. Python学习手册之字符类和元字符深入
  5. rubymine自动转义双引号
  6. linux 查看内置命令
  7. 【调试】Linux下超强内存检测工具Valgrind
  8. ORB-SLAM(八)ORBmatcher 特征匹配
  9. 数据库c3p0配置文件
  10. Mac brew安装redis