【002-Add Two Numbers (单链表表示的两个数相加)】


原题

  You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

  Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)

  Output: 7 -> 0 -> 8

题目大意

  有两个单链表。代表两个非负数,每个节点代表一个数位。数字是反向存储的。即第一个结点表示最低位。最后一个结点表示最高位。求两个数的相加和,而且以链表形式返回。

解题思路

  对两个链表都从第一个開始处理,进行相加,结果再除以10求商。作为下一位相加的进位。同一时候记录余数,作为本位的结果,一直处理,直到全部的结点都处理完。

代码实现

 /**
* 002-Add Two Numbers (单链表表示的两个数相加)
* @param l1 第一个数
* @param l2 第二个数
* @return 结果
*/
public ListNode addTwoNumbers(ListNode l1, ListNode l2) { if (l1 == null) {
return l2;
} if (l2 == null) {
return l1;
} ListNode p1 = l1;
ListNode p2 = l2;
ListNode root = new ListNode(0); // 头结点
ListNode r = root;
root.next = l1; int carry = 0; // 初始进位
int sum;
while (p1 != null && p2 != null) {
sum = p1.val + p2.val + carry;
p1.val = sum % 10; // 本位的结果
carry = sum / 10; // 本次进位 r.next = p1;
r = p1; // 指向最后一个相加的结点
p1 = p1.next;
p2 = p2.next; } if (p1 == null) {
r.next = p2;
} else {
r.next = p1;
} // 最后一次相加还有进位
if (carry == 1) {
// 開始时r.next是第一个要相加的结点
while (r.next != null) {
sum = r.next.val + carry;
r.next.val = sum % 10;
carry = sum / 10;
r = r.next;
} // 都加完了还有进位。就要创建一个新的结点
if (carry == 1) {
r.next = new ListNode(1);
}
} return root.next;
}
}

评測结果

  点击图片,鼠标不释放,拖动一段位置,释放后在新的窗体中查看完整图片。

特别说明

欢迎转载,转载请注明出处【http://blog.csdn.net/DERRANTCM/article/details/46905467

【LeetCode-面试算法经典-Java实现】【002-Add Two Numbers (单链表表示的两个数相加)】的更多相关文章

  1. LeetCode 2. add two numbers && 单链表

    add two numbers 看题一脸懵逼,看中文都很懵逼,链表怎么实现的,点了debug才看到一些代码 改一下,使本地可以跑起来 # Definition for singly-linked li ...

  2. 【LeetCode-面试算法经典-Java实现】【139-Word Break(单词拆分)】

    [139-Word Break(单词拆分)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a string s and a dictionary of w ...

  3. 【LeetCode-面试算法经典-Java实现】【015-3 Sum(三个数的和)】

    [015-3 Sum(三个数的和)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given an array S of n integers, are there ...

  4. 【LeetCode-面试算法经典-Java实现】【030-Substring with Concatenation of All Words(串联全部单词的子串)】

    [030-Substring with Concatenation of All Words(串联全部单词的子串)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Yo ...

  5. 【LeetCode-面试算法经典-Java实现】【118-Pascal's Triangle(帕斯卡三角形)】

    [118-Pascal's Triangle(帕斯卡三角形(杨辉三角))] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given numRows, generate ...

  6. 【LeetCode-面试算法经典-Java实现】【056-Merge Intervals(区间合并)】

    [056-Merge Intervals(区间合并)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a collection of intervals, ...

  7. 【LeetCode-面试算法经典-Java实现】【145-Binary Tree Postorder Traversal(二叉树非递归后序遍历)】

    [145-Binary Tree Postorder Traversal(二叉树非递归后序遍历)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a bin ...

  8. 【LeetCode-面试算法经典-Java实现】【057-Insert Interval(插入区间)】

    [057-Insert Interval(插入区间)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a set of non-overlapping in ...

  9. 【LeetCode-面试算法经典-Java实现】【144-Binary Tree Preorder Traversal(二叉树非递归前序遍历)】

    [144-Binary Tree Preorder Traversal(二叉树非递归前序遍历)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a bina ...

随机推荐

  1. [Cake] 2. dotnet 全局工具 cake

    在上篇博客[Cake] 1. CI中的Cake中介绍了如何在CI中利用Cake来保持与CI/CD环境的解耦. 1. 简化cake的安装 当时dotnet 2.1还未正式发布,dotnet 还没有工具的 ...

  2. Leetcode3--->无重复字符的最长子串长度

    题目:给定一个字符串string,找出string中无重复字符的最长子串. 举例: Given "abcabcbb", the answer is "abc", ...

  3. linux随笔四

    1.ps -ef     : -e   显示系统上运行的所有进程,-f 显示一些有用的信息列 UID:负责启动进程的用户 PID:进程的ID PPID:父进程的PID(某个进程由另一个进程启动) C: ...

  4. 代码托管在阿里云并用git拉取

    1.在阿里云上注册一个账号,https://code.aliyun.com/ 2.创建组 3.添加组员权限 4.添加项目 5.复制项目地址 安装git   https://git-scm.com/   ...

  5. WIN下C开发环境搭建

    安装编译器 MinGW提供了一套简单方便的Winodows下的基于GCC程序开发环境 官网下载安装 http://www.mingw.org/ 打开后选择basic setup的package Ins ...

  6. iOS学习笔记26-视频播放

    一.视频 在iOS中播放视频可以使用两个框架来实现: MediaPlayer框架的MPMoviePlayerController和MPMoviePlayerViewController AVFound ...

  7. IE7中a标签包含img,点击img,链接失效的bug

    在做列表时,我们经常会这样写: <ul class="works-list"> <li> <a href=""> <d ...

  8. BZOJ 3786 星系探索 ——Splay

    子树可以移动,唔. 还是用Splay维护DFS序即可. 子树的话直接截取出来就好了. 然后求前驱后继可能麻烦一些. 添加两个虚拟节点会比较好写. #include <map> #inclu ...

  9. 记录Spring Boot大坑一个,在bean中如果有@Test单元测试,不会注入成功

    记录Spring Boot大坑一个,在bean中如果有@Test单元测试,不会注入成功 记录Spring Boot大坑一个,在bean中如果有@Test单元测试,不会注入成功 记录Spring Boo ...

  10. 完全平方数(bzoj 2440)

    Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而这丝毫不影响他对其他数的热爱. 这天是 ...