[LeetCode]445. Add Two Numbers II

来源:互联网 发布:wildfly 端口配置 编辑:程序博客网 时间:2024/06/05 00:40

https://leetcode.com/problems/add-two-numbers-ii/

链表表示数字,与Add Two Numbers I题不同的是,这个链表表示形式和正常相同。


用栈把链表逆序



/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {        Stack<ListNode> s1 = new Stack<>();        Stack<ListNode> s2 = new Stack<>();        while (l1 != null) {            s1.push(l1);            l1 = l1.next;        }        while (l2 != null) {            s2.push(l2);            l2 = l2.next;        }        ListNode head = null;        int add = 0;        while (!s1.isEmpty() || !s2.isEmpty()) {            int sum = add;            if (!s1.isEmpty()) {                ListNode n1 = s1.pop();                sum += n1.val;            }            if (!s2.isEmpty()) {                ListNode n2 = s2.pop();                sum += n2.val;            }            ListNode n = new ListNode(sum % 10);            n.next = head;            add = sum / 10;            head = n;        }        if (add != 0) {            ListNode n = new ListNode(1);            n.next = head;            head = n;        }        return head;    }}


0 0
原创粉丝点击