2.两数相加
题目描述就不放了,题目链接
这个题是一个很经典的链表操作的题,这道题需要用到链表的一些基本操作
首先这道题给出的两个链表是不一定等长的,而且数字是逆序存放的。
所以我们可以很方便的先把低位的数加起来,然后再考虑进位的情况下,
把高位的数字直接加到答案链表上。
代码如下:
/**
* 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 answer = new ListNode(0);
ListNode cur = answer;
int j = 0, sum = 0;
while(l1!=null && l2!=null){
sum = l1.val +l2.val +j;
cur.next = new ListNode(sum %10);
j = sum /10;
cur = cur.next;
l1 = l1.next;
l2 = l2.next;
}
while(l1!=null){
sum = l1.val +j;
cur.next = new ListNode(sum %10);
j = sum /10;
cur = cur.next;
l1 = l1.next;
}
while(l2!=null){
sum = l2.val + j;
cur.next = new ListNode(sum %10);
j = sum /10;
cur = cur.next;
l2 = l2.next;
}
if(j!=0){
cur.next = new ListNode(j);
cur = cur.next;
}
return answer.next;
}
}