题解 | #两个链表生成相加链表#利用栈实现

两个链表生成相加链表

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) {
        // write code here
        //借助栈来实现
        if(head1 == null){
            return head2;
        }
        if(head2 == null){
            return head1;
        }
        Stack<ListNode> s1 = new Stack();
        Stack<ListNode> s2 = new Stack();
        Stack<ListNode> res = new Stack();
        while(head1 != null){
            s1.push(head1);
            head1 = head1.next;
        }
        while(head2 != null){
            s2.push(head2);
            head2 = head2.next;
        }
        //依次出栈并相加 放入res
        boolean isNeedAddOne = false;
        while(!s1.isEmpty() || !s2.isEmpty()){
            int n1 = 0;
            int n2 = 0;
            ListNode cur = null;
            if(!s1.isEmpty()){
                cur = s1.pop();
                n1 = cur.val;
            }
            if(!s2.isEmpty()){
                cur = s2.pop();
                n2 = cur.val;
            }
            int sum = n1 + n2;
            if(isNeedAddOne){
                sum += 1;
            }
            if(sum >= 10){
                isNeedAddOne = true;
                int ge = sum % 10;
                cur.val = ge;
            } else {
                isNeedAddOne = false;
                cur.val = sum;
            }
            res.push(cur);
        }
        if(isNeedAddOne){
             ListNode last = new ListNode(1);
             res.push(last);
        }
        ListNode head = res.pop();
        ListNode result = head;
        while(!res.isEmpty()){
            result.next = res.pop();
            result = result.next;
        }
        return head;
    }
}
全部评论

相关推荐

码农索隆:邮件那么小的内存,把邮箱都干满了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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