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

链表相加(二)

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

using System;
using System.Collections.Generic;

/*
public class ListNode
{
    public int val;
    public ListNode next;

    public ListNode (int x)
    {
        val = x;
    }
}
*/

class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param head1 ListNode类
     * @param head2 ListNode类
     * @return ListNode类
     */
    public ListNode addInList (ListNode head1, ListNode head2) {
        // write code here
        if (head1 == null || head2 == null)
            return null;
        if (head1 != null && head2 == null)
            return head1;
        if (head1 == null && head2 != null)
            return head2;

        //逆序
        ListNode lnHead1 = new ListNode(0);
        while (head1 != null) {
            ListNode lnTmp = lnHead1.next;
            lnHead1.next = head1;
            ListNode lnTmpSec = head1.next;
            head1.next = lnTmp;
            head1 = lnTmpSec;
        }
        ListNode lnHead2 = new ListNode(0);
        while (head2 != null) {
            ListNode lnTmp = lnHead2.next;
            lnHead2.next = head2;
            ListNode lnTmpSec = head2.next;
            head2.next = lnTmp;
            head2 = lnTmpSec;
        }
        lnHead1 = lnHead1.next;
        lnHead2 = lnHead2.next;
        int nC = 0;
        ListNode lsRtn = new ListNode(0);
        while (lnHead1 != null && lnHead2 != null) {
            int nRtn = (nC + lnHead1.val + lnHead2.val) % 10;
            nC = (nC + lnHead1.val + lnHead2.val) / 10;
            ListNode lsRtnC = new ListNode(nRtn);
            ListNode lnTmp = lsRtn.next;
            lsRtn.next = lsRtnC;
            lsRtnC.next = lnTmp;
            lnHead1 = lnHead1.next;
            lnHead2 = lnHead2.next;
        }
        while (lnHead1 != null) {
            int nRtn = (nC + lnHead1.val) % 10;
            nC = (nC + lnHead1.val) / 10;
            ListNode lsRtnC = new ListNode(nRtn);
            ListNode lnTmp = lsRtn.next;
            lsRtn.next = lsRtnC;
            lsRtnC.next = lnTmp;
            lnHead1 = lnHead1.next;
        }
        while (lnHead2 != null) {
            int nRtn = (nC + lnHead2.val) % 10;
            nC = (nC + lnHead2.val) / 10;
            ListNode lsRtnC = new ListNode(nRtn);
            ListNode lnTmp = lsRtn.next;
            lsRtn.next = lsRtnC;
            lsRtnC.next = lnTmp;
            lnHead2 = lnHead2.next;
        }
        if (nC > 0) {
            ListNode lsRtnC = new ListNode(nC);
            ListNode lnTmp = lsRtn.next;
            lsRtn.next = lsRtnC;
            lsRtnC.next = lnTmp;
        }
        return lsRtn.next;
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务