您的位置:首页 > 其它

leetcode002——add two numbers

2015-05-07 20:42 246 查看
一、题目描述

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

二、思路及代码

这个问题需要注意的地方:进位,尤其是最后一位的进位不要忘了。

代码如下(423ms 有点弱,待改进)

public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if(l1 == null) {
return l2;
}
else if(l2 == null) {
return l1;
}
else if(l1 == null && l2 == null) {
return null;
}
else {
ListNode head = new ListNode(0);
ListNode l3 = new ListNode(0);
head.next = l3;
int carry = 0;
while(l1 != null || l2 != null) {
if(l1.val + l2.val + carry>= 10) {
l3.next = new ListNode(l1.val + l2.val + carry - 10);
carry = 1;
}
else {
l3.next = new ListNode(l1.val + l2.val + carry);
carry = 0;
}

if(l1.next == null && l2.next != null) {
l1.next = new ListNode(0);
l1 = l1.next;
l2 = l2.next;
}
else if(l1.next != null && l2.next == null){
l1 = l1.next;
l2.next = new ListNode(0);
l2 = l2.next;
}
else {
l1 = l1.next;
l2 = l2.next;
}
l3 = l3.next;
if(l1 == null && l2 == null && carry == 1) {
l3.next = new ListNode(1);
}
}
return head.next.next;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: