[LeetCode Hot 100] LeetCode2. 两数相加
题目描述
思路:模拟
每次3个数相加:l1链表的值 + l2链表的值 + 进位
如果 l1链表不为空 或者 l2链表不为空 或者 进位不为0 我们就执行循环
那么和存储的是 t % 10
进位就是t / 10
因为题目需要创造一条链表,所以我们创建一个dummy结点的话会方便一点。
方法一:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
// 记录进位
int t = 0;
ListNode p = l1, q = l2;
// 因为要创造新的链表,所以新建dummy结点
ListNode dummy = new ListNode();
ListNode cur = dummy;
while (p != null || q != null || t != 0) {
if (p != null) {
t += p.val;
p = p.next;
}
if (q != null) {
t += q.val;
q = q.next;
}
cur.next = new ListNode(t % 10);
cur = cur.next;
t /= 10;
}
return dummy.next;
}
}
本文作者:Ac_c0mpany丶
本文链接:https://www.cnblogs.com/keyongkang/p/17883811.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步