/**
* 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) {
ListNode pre = new ListNode(0);
ListNode cur = pre;
int carry = 0;
while (l1 != null || l2 != null) {
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.next = new ListNode(sum);
cur = cur.next;
if (l1 != null)
l1 = l1.next;
if (l2 != null)
l2 = l2.next;
}
if (carry == 1) {
cur.next = new ListNode(carry);
}
return pre.next;
}
}
对于这道题的相关总结
首先我们要去了解链表的相关的知识
在最开始的时候,我们要去先new上一个链表
让指针指向这个头节点
方便我们在之后对链表的一个相关的遍历
从而在遍历的过程中我们知道,在这个链表中我们去存储这个原本的进位之后的数值
表示我们链表中所剩下的数值
之后在进位之后我们让这个carry去接受这个值在之后进行添加到更高一位的数值上
这样的话就去实现了一个新的链表最后输出