2023/07/03_leetcode每日一题_445. 两数相加 II

题目

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

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

思路

最开始的错误思路:本来想遍历两个listnode,然后得到值加和,得到结果遍历赋给新的listnode,这个就是结果,但是,链表的长度范围为 [1, 100],int根本装不下。

参考题解的思路:
把所有数字压入栈中,再依次取出相加。

代码

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        Deque<Integer> queue1=new ArrayDeque<Integer>();
        Deque<Integer> queue2=new ArrayDeque<Integer>();
        while(l1!=null) {queue1.push(l1.val);l1=l1.next;}
        while(l2!=null) {queue2.push(l2.val);l2=l2.next;}
        ListNode pre=null;
        Boolean isAdd=false;
        while(!queue1.isEmpty()||!queue2.isEmpty()){
            int x=0;
            if(!queue1.isEmpty()) x+=queue1.pop();
            if(!queue2.isEmpty()) x+=queue2.pop();
            if(isAdd) x+=1;
            if(x>=10) {isAdd=true;x-=10;}
            else isAdd=false;
            ListNode m=new ListNode(x);
            m.next=pre;
            pre=m;
        }
        if(isAdd){
            ListNode m=new ListNode(1);
            m.next=pre;
            pre=m;
        }
        return pre;
    }
}

查找的问题

1.Java栈的实现
双端队列作为堆栈数据结构
Java Collections框架的Stack类提供了堆栈的实现。
但是,建议Deque用作堆栈而不是Stack类。这是因为Stack的方法是同步的。
以下是Deque接口提供的用于实现堆栈的方法:
push() - 在双端队列的开头添加元素
pop() - 从双端队列的开头删除元素
peek() - 从双端队列的开头返回一个元素

2.判断队列是否为空isEmpty()方法,不是是否等于null

java Deque

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值