LeetCode2 两数相加
程序员文章站
2022-04-04 09:03:14
...
·
亚节点
两个节点指向两条链表,遍历即可
//对于链表问题,返回结果为头节点时,
//通常需要先初始化一个预先指针pre,该指针的下一个节点指针指向真正的头结点head,
//使用预先指针的目的在于链表初始化时无可用节点值,而且链表构造过程需要指针移动,进而导致头指针丢失
//无法返回结果
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
//定义哑节点
ListNode pre = new ListNode(0);
//当前cur指针返回压接地那
ListNode cur = pre;
//进位
int carry = 0;
//当任意一个链表没有遍历完
while(l1 != null || l2 != null) {
//当某个链表为空时则让其为0
int x = l1 == null ? 0 : l1.val;
int y = l2 == null ? 0 : l2.val;
//求和
int sum = x + y + carry;
//求进位
carry = sum / 10;
//求在这个为上的进位
sum = sum % 10;
//更新cur
cur.next = new ListNode(sum);
cur = cur.next;
if(l1 != null)
l1 = l1.next;
if(l2 != null)
l2 = l2.next;
}
//如果链表全部遍历完毕,进位值为1,则在新链表最前方添加节点
if(carry == 1) {
cur.next = new ListNode(carry);
}
return pre.next;
}
下一篇: 已知三点算同距的点