day7.13

思路:

  • 给出两个链表,里面填了数据;
  • 用算法实现两个链表相加,其中两链表里面的数据是逆存放的,方便了我们计算,我们只需要再输出时,实现正序输出即可;
  • 例子:[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 s1= new Stack<>();
Stack 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;
}
}

posted @ 2021-07-14 18:50  头秃准备  阅读(35)  评论(0)    收藏  举报