【LeetCode】4.Add Two Numbers

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

这题比较简单,注意链表相关操作就可以了。刚开始想复杂了,它本来就是倒置的,直接从头开始加就可以,不用再倒置了。

注意最后的进位判断,否则会出错。

 if (temp != 0) {  
            ret.next = new ListNode(0);  
            ret.next.val = temp;  
 }  
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        // Start typing your Java solution below
        // DO NOT write main() function
        ListNode ret=new ListNode(0);
        ListNode start=ret;
        int l1v=0;
        int l2v=0;
        int temp=0;
        ListNode t1 = l1;  
        ListNode t2 = l2;  
        while(t1!=null||t2!=null){
            ret.next=new ListNode(0);
            ret=ret.next;
            if(t1==null){
                l1v=0;
            }else{
                l1v=t1.val;
                t1=t1.next;
            }
            if(t2==null){
                l2v=0;
            }else{
                l2v=t2.val;
                t2=t2.next;
            }
            ret.val=(l1v+l2v+temp)%10;
            temp=(l1v+l2v+temp)/10;
        }
        if (temp != 0) {  
            ret.next = new ListNode(0);  
            ret.next.val = temp;  
        }  
        return start.next;
    }
}

  

posted @ 2013-09-25 15:35  果汁果粒  阅读(148)  评论(0编辑  收藏  举报