题目解析
设立一个表示进位的变量
carried,建立一个新链表,把输入的两个链表从头往后同时处理,每两个相加,将结果加上carried后的值作为一个新节点到新链表后面。
代码实现
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummyHead = new ListNode(0);
ListNode cur = dummyHead;
int carry = 0;
while(l1 != null || l2 != null)
{
int sum = carry;
if(l1 != null)
{
sum += l1.val;
l1 = l1.next;
}
if(l2 != null)
{
sum += l2.val;
l2 = l2.next;
}
// 创建新节点
carry = sum / 10;
cur.next = new ListNode(sum % 10);
cur = cur.next;
}
if (carry > 0) {
cur.next = new ListNode(carry);
}
return dummyHead.next;
}
}
这篇博客详细介绍了如何通过链表结构来解决两个数相加的问题。文章中提供了一段Java代码实现,该代码创建了一个辅助链表,并在遍历两个输入链表的同时进行加法运算,处理了进位情况。最后,生成的新链表包含了两数相加的结果。
262

被折叠的 条评论
为什么被折叠?



