2. 两数相加
程序员文章站
2022-04-17 15:51:54
...
题目来源
题目描述
题目解析
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode result = new ListNode(-1);
ListNode cur = result;
int c = 0; // 进位
while (l1 != null || l2 != null){
int a = l1 == null ? 0 : l1.val;
int b = l2 == null ? 0 : l2.val;
cur.next = new ListNode((a + b + c) % 10); // 当前节点指向下一个节点
cur = cur.next; // 当前节点指向最后一个节点
c = (a + b + c) / 10; // 更新进位
l1 = l1 == null ? null : l1.next; // 更新要计算的下一个数
l2 = l2 == null ? null : l2.next;
}
if (c != 0){
cur.next = new ListNode(c);
}
// 非空链表,所以至少一个
return result.next;
}
}