题目
输入两个链表,求两个链表的和
例:输入:2->4->3 5->6->4
输出:7->0->8
思路
需要定义一个头指针来指向新建立的结点,然后当成两条链表的遍历就可以了,需要注意的就是如两条链表遍历完后,进位标志仍为1,需要加一个结点指向它,作为新的进位。
代码:
public class ReverseSum {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode pre = new ListNode(0);
ListNode cur = pre;
int cy = 0;
while(l1!=null||l2!=null) {
int x = l1==null?0:l1.val;
int y = l2==null?0:l2.val;
int sum = x+y+cy;
cy = sum/10;
int now = sum%10;
ListNode nowNode = new ListNode(now);
cur.next = nowNode;
cur = cur.next;
if(l1!=null)
l1 = l1.next;
if(l2!=null)
l2 = l2.next;
}
if(cy!=0) {
ListNode head = new ListNode(1);
cur.next = head;
}
return pre.next;
}
}