package cn.rongcloud.portal.server;
//链表节点 包含next 指针
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode header = new ListNode(0);
ListNode p = l1, q = l2, tmp = header;
int curry = 0;
while(p != null || q != null){
//获取两个链表中当前节点的值
int x = p != null ? p.val : 0;
int y = q != null ? q.val : 0;
//获取当前节点中的结果值
int sum = x + y + curry;
curry = sum /10;
tmp.next = new ListNode(sum % 10);
tmp = tmp.next;
if(p != null)
p = p.next;
if(q != null)
q = q.next;
}
if(curry > 0){
tmp.next = new ListNode(curry);
}
return header.next;
}
public static void main(String[] args) {
//第一个链表中包含 1 2
Solution solution = new Solution();
ListNode listNode = new ListNode(1);
listNode.next = new ListNode(2);
//第二个链表 包含 5 6
ListNode listNode1 = new ListNode(5);
listNode1.next = new ListNode(6);
ListNode listNode2 = solution.addTwoNumbers(listNode, listNode1);
打印结果链表中的 两个值
System.out.println(listNode2.val+"+"+listNode2.next.val);
}
}
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.