两个链表生成相加链表

两个链表生成相加链表

https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b?tpId=196&tab=answerKey

public ListNode addInList (ListNode head1, ListNode head2) {
        // write code here
        Stack<ListNode> stack1=new Stack<>();//用栈保存链表 便于从链表尾部相加
        Stack<ListNode> stack2=new Stack<>();
        while (head1!=null){
            stack1.push(head1);
            head1=head1.next;
        }
        while (head2!=null){
            stack2.push(head2);
            head2=head2.next;
        }
        int jw=0;//初始化进位为0 后续不断更新
        ListNode pre=new ListNode(0);
        pre.next=null;
        while (stack1.size()>0 && stack2.size()>0){
            int  p1=stack1.pop().val;
            int  p2=stack2.pop().val;
            int rr =(p1+p2+jw)%10;
            jw=(p1+p2+jw)/10;
            ListNode temp=new ListNode(0);
            temp.val=rr;
            temp.next=pre.next;
            pre.next=temp;
        }
        //stack jw pre
        jw=tj(stack1,jw,pre);
        jw=tj(stack2,jw,pre);
        if (jw!=0) {
            ListNode t=new ListNode(0);
            t.val=jw;
            t.next=pre.next;
            pre.next=t;
        }
        return pre.next;
    }

    private int tj(Stack<ListNode> stack1, int jw, ListNode pre) {
        while (stack1.size()>0){
            int p1=stack1.pop().val;
            int rr = (p1+jw)%10;
            jw=(p1+jw)/10;
            ListNode temp=new ListNode(0);
            temp.val=rr;
            temp.next=pre.next;
            pre.next=temp;
        }
        return jw;
    }
全部评论

相关推荐

点赞 评论 收藏
分享
找个工作&nbsp;学历是要卡的&nbsp;要求是高的&nbsp;技能不足是真的&nbsp;实习经验是0的&nbsp;简历无处可写是事实的&nbsp;钱不好赚是真的&nbsp;想躺平又不敢躺&nbsp;也不甘心躺&nbsp;怕自己的灵感和才华被掩埋甚至从未被自己发现&nbsp;又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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