飘飘摇摇的風

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);
}

2016-10-24 19:46:34

2017-06-04 14:55:04

2016-11-21 12:05:45

[LeetCode] 002. Add Two Numbers (Medium) (C++/Java/Python)

2015-02-27 12:43:08

2016-09-18 21:49:47

2016-05-03 09:49:29

leetcode 2. Add Two Numbers C语言实现

2017-03-31 19:48:34

2017-03-21 20:11:37

2013-09-14 17:06:48

2014-02-26 06:46:10