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

链表相加(二)

https://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 || head2 == null){
            return head1== null ? head2 : head1;
        }
        head1=reverse(head1);
        head2=reverse(head2);
        ListNode result = new ListNode(-1);
        ListNode head = result;
        int carry = 0;
        while(head1!=null || head2 !=null){
            int tmp =0;
            if(head1 != null){
                tmp += head1.val;
                head1 = head1.next;
            }
            if(head2 !=null){
                tmp += head2.val;
                head2 = head2.next;
            }
            // System.out.println("a2:"+add2);
            tmp = tmp +carry ;
            result.next = new ListNode(tmp%10);
            System.out.println("tmp:"+tmp%10);
            carry = tmp/10;
            System.out.println("carry:"+carry);
            result = result.next;
        }
        if(carry>0){
            // System.out.println("carry>0");
            result.next = new ListNode(carry);
            System.out.println("val:"+result.next.val);
            // result = result.next;
        }
        return reverse(head.next);
    }
    // 反转链表
    public ListNode reverse(ListNode head){
        // 记录翻转位置
        
        ListNode cur = head.next;
        System.out.println("cur val"+cur.val);
        ListNode pre = head;
        while(cur!=null){
            // 暂存翻转后的下一个位置
            ListNode tmp = cur.next;
            cur.next = pre;
            pre = cur;
            cur = tmp;
        }
        head.next = null;
        return pre;
    }
}

全部评论

相关推荐

kl_我是东山啊:《相关公司:阿里巴巴》
投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务