image.png

解题思路

使用双栈

  1. public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
  2. Stack<Integer> stack1 = new Stack<>();
  3. Stack<Integer> stack2 = new Stack<>();
  4. ListNode node1 = l1;
  5. while (node1 != null){
  6. stack1.push(node1.val);
  7. node1 = node1.next;
  8. }
  9. ListNode node2 = l2;
  10. while (node2 != null){
  11. stack2.push(node2.val);
  12. node2 = node2.next;
  13. }
  14. ListNode head = null;
  15. int flag = 0;
  16. while(!stack1.isEmpty() || !stack2.isEmpty() || flag != 0){
  17. int value = flag;
  18. if (!stack1.isEmpty())
  19. value += stack1.pop();
  20. if (!stack2.isEmpty())
  21. value += stack2.pop();
  22. ListNode node = new ListNode(value % 10);
  23. flag = value / 10;
  24. node.next = head;
  25. head = node;
  26. }
  27. return head;
  28. }