您的位置:首页 > 其它

Leetcode-add-two-numbers

2016-07-24 16:53 330 查看


题目描述

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
求两个链表的数之和,仍然以链表形式保存。

思路:新建一个ListNode节点,然后赋给temp节点,变量tmp记录计算进位,当l1.next或者l2.next或者temp!=0的时候进入循环,如果l1不为空,说明l1链表有数,数值累加到tmp中,并且l1 = l1.next;接着l2的处理一样,tmp值加l2节点的值,l2往后移一个位置;计算出tmp后,新建节点new ListNode(tmp % 10),让temp.next指向该节点,同时tmp置为tmp/10。 最后返回最初定义的头节点的next节点。

* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if(l1 == null)
return l2;
if(l2 == null)
return l1;
ListNode dummy = new ListNode(0);
ListNode temp = dummy;

int tmp = 0;
while(l1 != null || l2 != null || tmp != 0){
if(l1 != null){
tmp += l1.val;
l1 = l1.next;
}
if(l2 != null){
tmp += l2.val;
l2 = l2.next;
}

temp.next = new ListNode(tmp%10);
temp = temp.next;
tmp /= 10;

}
return dummy.next;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: