zoukankan      html  css  js  c++  java
  • 两数相加II--链表

    题目

    给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。

    你可以假设除了数字 0 之外,这两个数字都不会以零开头。

    进阶:

    如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。

    示例:

    输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)
    输出: 7 -> 8 -> 0 -> 7

    思想

    大家先参考另一篇我的博客题目https://www.cnblogs.com/guohai-stronger/p/11715023.html

    题目中说了不能翻转链表, 而且链表的头部是高位,和上面的博客题目是有点不同,但是我们不能使用翻转链表,可以使用栈先进后出的思想达到链表的翻转.

    代码

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            
            Stack<Integer> stack1=new Stack();
            Stack<Integer> stack2=new Stack();
            ListNode node1=l1;
            while(node1!=null){
                stack1.push(node1.val);
                node1=node1.next;
            }
            ListNode node2=l2;
            while(node2!=null){
                stack2.push(node2.val);
                node2=node2.next;
            }
            ListNode head=null;
            int flag=0;
            while(!stack1.isEmpty()||!stack2.isEmpty()||flag!=0){
                int value=0;
                if(!stack1.isEmpty())
                    value+=stack1.pop();
                if(!stack2.isEmpty())
                    value+=stack2.pop();
                value+=flag;
                ListNode node=new ListNode(value%10);
                flag=value/10;
                node.next=head;
                head=node;
            }
           return head;
        }

    结果

  • 相关阅读:
    子矩阵
    [Ahoi2008]Meet 紧急集合
    立体图
    CF933B A Determined Cleanup
    CF746G New Roads
    树的重量
    CF519E A and B and Lecture Rooms
    矩阵
    深入浅出乘法逆元
    20180519模拟赛T2——pretty
  • 原文地址:https://www.cnblogs.com/guohai-stronger/p/11973846.html
Copyright © 2011-2022 走看看