Leet Code 2.两数相加
2.两数相加
题目描述
给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
示例
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
解题思路
- 对两个链表的起始位进行相加,保存在第三个链表节点。
- 需要注意进位,若进位为1,则下一位要加一,若是最后的进位仍为1,则需要将结果链表多一位。
代码
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode newnode = new ListNode(0);
ListNode l3 = newnode;
int c = 0;
while(l1 != null || l2 != null || c > 0) {
int sum = ((l1 != null) ? l1.val : 0) + ((l2 != null) ? l2.val : 0) + c;
c = sum/10;
l3.next = new ListNode(sum%10);
l3 = l3.next;
if(l1!=null)
{
l1 = l1.next;
}
if(l2!=null)
{
l2 = l2.next;
}
}
return newnode.next;
}
}
题目难点及收获
- 构建链表的细节,因为刚接触Java,之前用C。构建链表时并没有注意到不能对空指针操作。
- coding中,了解到静态内部类不能访问非静态类的方法。这是由于非静态类不是一开始就编译好的,静态方法执行优先于非静态。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 手把手教你更优雅的享受 DeepSeek
· 腾讯元宝接入 DeepSeek R1 模型,支持深度思考 + 联网搜索,好用不卡机!
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库