思路:
- 给出两个链表,里面填了数据;
- 用算法实现两个链表相加,其中两链表里面的数据是逆存放的,方便了我们计算,我们只需要再输出时,实现正序输出即可;
- 例子:[2,4,3]+[5,6,4]=[708],而我们输出应该为807。
代码:
public class ListNode {
int val;
ListNode next;
ListNode(int x){
val = x;
}
}
public class Solution {
public ListNode addTwoNumbers(ListNode l1,ListNode l2) {
Stack<Integer> s1= new Stack<>();
Stack<Integer> s2= new Stack<>();
while(l1 != null){
s1.push(l1.val);
l1 = l1.next;
}
while(l2 != null){
s2.push(l2.val);
l2 = l2.next;
}
int sum = 0;
ListNode head = new ListNode(0);
while(!s1.empty()||!s2.empty()){
if(!s1.empty())
sum += s1.pop();
if(!s2.empty())
sum += s2.pop();
head.val = sum % 10;
ListNode node = new ListNode(sum / 10);
node.next = head;
head = node;
sum /= 10;
}
return head.val == 0 ? head.next : head;
}
}