您的位置:首页 > 其它

leetcode2 add two number

2016-06-13 15:27 405 查看
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

这道题思路简单,主要是处理各种边界情况,比如一开始我没有考虑到5+5 =10这种情况,导致结果是0.

/**
* Created by kyle on 2016/6/13.
*/
public class Add2Sum {
static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
if(l1 == null || l2 == null){
return null;
}
int overflow = 0;
ListNode result = new ListNode(0);
ListNode head = result;
int dig;
int sum = 0;

while(!(l1 == null && l2 == null)){
int val1, val2;

if(l1 == null){
val1 = 0;
}else {

val1 = l1.val;
l1 = l1.next;
}

if(l2 == null){
val2 =0;
}else {

val2 = l2.val;
l2 = l2.next;
}
sum =val1+ val2 + overflow;
if(sum >=10){
dig =sum -10;
overflow =1;
}else {
dig = sum;
overflow = 0;
}

result.next = new ListNode(dig);
result = result.next;

}

if(overflow > 0){
result.next = new ListNode(overflow);
}
return head.next;
}

static public void main(String[] args){
ListNode l1 = new ListNode(6);
// l1.next = new ListNode(5);
ListNode l2 = new ListNode(8);
ListNode l3 = addTwoNumbers(l1, l2);
System.out.println(l3.toString());
}
}

public class ListNode {

int val;
ListNode next;
ListNode(int x) { val = x; }

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