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

链表相加(二)

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) {
        if(head1 == null || head2 == null){
            return head1 == null ? head2 : head1;
        }

        //两个都不为空,先反转,再相加,最后再反转回来
        ListNode revert1 = revert(head1);
        ListNode revert2 = revert(head2);

        int carry = 0;
        ListNode dummy = new ListNode(-1), cur = dummy;
        while(revert1 != null || revert2 != null){
            int val = (revert1 != null ? revert1.val : 0) + (revert2 != null ? revert2.val : 0) + carry;
            cur.next = new ListNode(val % 10);
            cur = cur.next;
            carry = val / 10;

            if(revert1 != null){
                revert1 = revert1.next;
            }
            if(revert2 != null){
                revert2 = revert2.next;
            }
        }

        //这个点要注意:如果最后了还有个进位1,一定也要拼上
        if(carry == 1){
            cur.next = new ListNode(1);
        }

        return revert(dummy.next);
    }

    private static ListNode revert(ListNode head){
        ListNode pre = null, cur = head;
        while(cur != null){
            ListNode next = cur.next;
            cur.next = pre;
            pre = cur;
            cur = next;
        }

        return pre;
    }
}

#学习##刷题##每日刷题#
全部评论

相关推荐

头像
04-17 09:29
已编辑
湖南农业大学 后端
睡姿决定发型丫:本硕末9也是0offer,简历挂了挺多,只有淘天 美团 中兴给了面试机会,淘天二面挂,美团一面kpi面,中兴一面感觉也大概率kpi(虽然国企,但一面0技术纯聊天有点离谱吧)
点赞 评论 收藏
分享
迟缓的斜杠青年巴比Q了:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
长鑫存储
投递长鑫存储等公司6个岗位 >
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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