161人阅读 评论(0)

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

public class Solution {
public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if (l1 == null && l2 == null)
return null;
/*
* 在java中，基本类型变量是传值的副本，对象型变量是传引用的副本，一次ret，ll操作的是同一内存，
* 	ll用来指示链表的头结点地址
*/
ListNode ll =null;
ListNode ret=ll;
int carry = 0;
int l1_val = 0;
int l2_val = 0;
while (l1 != null || l2 != null ) {
l1_val = (null == l1) ? 0 : l1.val;
l2_val = (null == l2) ? 0 : l2.val;
int add = l1_val + l2_val + carry;
if(ll==null){
ll=n;
ret=n;
}else{
ret.next=n;
ret=n;
}
if (null != l1)
l1 = l1.next;
if (null != l2)
l2 = l2.next;
}
if (l1 == null && l2 == null && carry!= 0){
ListNode n = new ListNode(carry);
ret.next = n;
}
return ll;
}
public static void main(String[] args) {
ListNode l1 = new ListNode(2);
ListNode x2 = new ListNode(4);
ListNode x3 = new ListNode(3);
l1.next = x2;
x2.next = x3;

ListNode l2 = new ListNode(5);
ListNode y2 = new ListNode(6);
ListNode y3 = new ListNode(4);
l2.next = y2;
y2.next = y3;

while(ret!=null&&ret.next!=null){
System.out.print(ret.val+"->");
ret=ret.next;
}
if(ret!=null)
System.out.print(ret.val);
}

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：68223次
• 积分：3667
• 等级：
• 排名：第8822名
• 原创：312篇
• 转载：3篇
• 译文：0篇
• 评论：3条
文章分类
评论排行
最新评论