题解 | #链表相加(二)#

链表相加(二)

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

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

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> list1 = new Stack<ListNode>();
        // Stack<ListNode> list2 = new Stack<ListNode>();
        // Stack<ListNode> resultStack = new Stack<ListNode>();
        // ListNode result = new ListNode(-1);
        // ListNode vNode = result;

        // while(head1 != null){
        //     list1.push(head1);
        //     head1 = head1.next;

        // }

        // while(head2 != null){
        //     list2.push(head2);
        //     head2 = head2.next;

        // }
        // int sn = 0;

        // while(!list1.empty() && !list2.empty()){
        //     int count = 0;
        //     count = list1.pop().val+list2.pop().val+sn;
        //     if(count >= 10){
        //         sn = 1;
        //         ListNode temp = new ListNode(count%10);
        //         resultStack.push(temp);
        //     }else{
        //         sn =  0;
        //         ListNode temp = new ListNode(count);
        //         resultStack.push(temp);

        //     }

        // }

        // while(!list1.empty()){
        //     int count = list1.pop().val+sn;
        //     if(count >= 10){
        //         sn = 1;
        //         ListNode temp = new ListNode(count%10);
        //         resultStack.push(temp);
        //     }else{
        //         sn =  0;
        //         ListNode temp = new ListNode(count);
        //         resultStack.push(temp);

        //     }

        // }

        // while(!list2.empty()){
        //     int count = list2.pop().val+sn;
        //     if(count >= 10){
        //         sn = 1;
        //         ListNode temp = new ListNode(count%10);
        //         resultStack.push(temp);
        //     }else{
        //         sn =  0;
        //         ListNode temp = new ListNode(count);
        //         resultStack.push(temp);

        //     }
        // }

        // if(sn == 1){
        //     ListNode temp = new ListNode (1);
        //     resultStack.push(temp);

        // }



        // while( !resultStack.empty() ){
        //     result = resultStack.pop();
        //     result = result.next;
        // }

        // return vNode.next;

        head1 = ReverseList(head1);
        head2 = ReverseList(head2);

        ListNode head = new ListNode(-1);
        ListNode vNode = head;

        int sn = 0;

        while(head1 != null || head2 != null){
            int val = sn;

            if( head1 != null){
                val += head1.val;
                head1 = head1.next;

            }

            if( head2 != null){
                val += head2.val;
                head2 = head2.next;

            }

            sn = val/10;

            vNode.next = new ListNode(val%10);
            vNode = vNode.next;



        }
        if (sn > 0){
            vNode.next = new ListNode(sn);
        }

        return ReverseList(head.next);


    }

    public ListNode ReverseList (ListNode head) {
        // write code here
        ListNode pre  = null;
        ListNode cur  = head;

        while(cur != null){
            ListNode cur_Next = cur.next;
            cur.next = pre;
            pre = cur;
            cur = cur_Next;

        }
        return pre;
    }



}

全部评论

相关推荐

头像
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务