题目描述
思路:模拟
每次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;
}
}
标签:dummy,ListNode,val,int,next,链表,Hot,LeetCode2,100
From: https://www.cnblogs.com/keyongkang/p/17883811.html