• 两数相加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;
        }

    结果

  • 相关阅读:
    队列与双向队列

    linux nohup, jobs, fg, tail指令 指令前后台切换
    linux shell
    Linux学习笔记四 grep, sed, awk
    面试要求
    jenkins send files or publish
    mysql导入脚本
    第三方接口调用框架
    pdm文件name与comment互相同步
  • 原文地址:https://www.cnblogs.com/guohai-stronger/p/11973846.html
Copyright © 2020-2023  润新知