题解 | #两个链表生成相加链表#

两个链表生成相加链表

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

反转链表模拟进位加法

反转链表是为了符合进位加法

思想
使用一个整形常量add来保存进位(0或1),通过不断移动指针获取参与加法的更高位。
构建结果链表使用头插法

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) {
        ListNode a = reverse(head1);
        ListNode b = reverse(head2);
        int carry = 0;    //保存进位
        ListNode ans = null;
        while(a != null || b != null || carry == 1){
            int sum = (a == null ? 0 : a.val) + (b == null ? 0 : b.val) + carry;
            carry = sum / 10;     // 更新进位
            ListNode dump = new ListNode(sum % 10);
            dump.next = ans;
            ans = dump;
            if(a != null) a = a.next;
            if(b != null) b = b.next;
        }
        return ans;
    }

    /**
    *  反转链表
    */
    public ListNode reverse(ListNode root){
        ListNode temp = null;
        while(root != null){
            ListNode d = root.next;
            root.next = temp;
            temp = root;
            root = d;
        }
        return temp;
    }
}
全部评论

相关推荐

来个大佬救一下,为上投了都是石沉大海了,没实习经历的话怕秋招直接进不了面。什么实习这么难找,基本
心态爆炸了:现在正式的岗位都少,实习基本不咋招的,除了大厂,中小企业其实没那么多岗位需求,就算是有,大多都是招一两个廉价劳动力,同时,他们也会希望你一来就能干活的,没时间培训你,就让你了解公司的项目,你了解完就可以开始干活。再者是,很多低质量的实习其实用处没有那么大的。我去年也是找实习找到破防,最后去了一家深圳的小公司实习,工作对我来说很简单,甚至不如我在学校做的项目,秋招的时候,这段实习经历也并没有帮上什么忙,投递简历,依旧非常低的回复率。低回复率是常态,尤其是找实习,找不到,那就把重心放在优化自己的简历和项目,多看八股文,锻炼自己的面试能力,多看别人的面经,自己模拟面试,等秋招的时候,只要有那么寥寥几次,好好抓住那几次机会。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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