题目:
思路:可以看看官方题解
代码:
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
Stack<Integer> stack1=buildstack(l1);
Stack<Integer> stack2=buildstack(l2);
int carry=0;
ListNode dummy=new ListNode(-1);//新建一个节点 指向头结点
while(!stack1.isEmpty()||!stack2.isEmpty()||carry!=0){
int x=stack1.isEmpty()?0:stack1.pop();
int y=stack2.isEmpty()?0:stack2.pop();
int sum=x+y+carry;
// carry=sum%10;
// ListNode node=new ListNode();
// node.val=carry;
ListNode node=new ListNode(sum%10);
//存储 7087
node.next=dummy.next;//这个看半天 一个节点看不明白的时候画两个
dummy.next=node;
carry=sum/10;//有进位传递
}
return dummy.next;
}
//将链表值进栈
public Stack<Integer> buildstack(ListNode l){
Stack<Integer> stack=new Stack<Integer>();
while(l!=null){
stack.push(l.val);
l=l.next;
}
return stack;
}
时间复杂度:O(max(m, n))