题解 | #两个链表生成相加链表#

两个链表生成相加链表

http://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param head1 ListNode类 
     * @param head2 ListNode类 
     * @return ListNode类
     */
    public ListNode addInList (ListNode head1, ListNode head2) {
        ListNode head1Reverse = reverse(head1);
        ListNode head2Reverse = reverse(head2);
        
        ListNode newHead = new ListNode(-1);
        ListNode curNode = newHead;
        int preAdd = 0;
        while(head1Reverse != null || head2Reverse!=null){
            int v1 = head1Reverse == null? 0: head1Reverse.val;
            int v2 = head2Reverse == null? 0: head2Reverse.val;
            int curVal = (v1+v2 + preAdd) % 10;
            preAdd = (v1+v2 + preAdd) / 10;
            
            ListNode node = new ListNode(curVal);
            curNode.next = node;
            curNode = node;
            
            head1Reverse = head1Reverse == null? null: head1Reverse.next;
            head2Reverse = head2Reverse == null? null: head2Reverse.next;
        }
        
        if(preAdd == 1){
            ListNode node = new ListNode(1);
            curNode.next = node;
        }
        
        return reverse(newHead.next);
    }
    
    public static ListNode reverse(ListNode head){
        ListNode pre = null;
        ListNode cur = head;
        while(cur != null){
            ListNode next = cur.next;
            cur.next = pre;
            pre = cur;
            cur = next;
        }
        return pre;
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务