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<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;
    }
}
posted @ 2021-07-14 18:50  头秃准备  阅读(23)  评论(0)    收藏  举报