题解 | #链表相加(二)#
链表相加(二)
https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head1 ListNode类 * @param head2 ListNode类 * @return ListNode类 */ public ListNode addInList (ListNode head1, ListNode head2) { // write code here // 使用两个栈存放数据 Stack<ListNode> stack1 = new Stack<>(); Stack<ListNode> stack2 = new Stack<>(); ListNode tmp1 = head1; ListNode tmp2 = head2; ListNode dummy = new ListNode(-1); while (tmp1 != null) { stack1.push(tmp1); tmp1 = tmp1.next; } while (tmp2 != null) { stack2.push(tmp2); tmp2 = tmp2.next; } // count 进位标志位 int count = 0; int val = 0; while (stack1.size() > 0 && stack2.size() > 0) { val = stack1.pop().val + stack2.pop().val + count; if (val >= 10) { val = val % 10; count = 1; } else { count = 0; } ListNode node = new ListNode(val); node.next = dummy.next; dummy.next = node; } while (stack1.size() > 0) { val = stack1.pop().val + count; if (val >= 10) { val = val % 10; count = 1; } else { count = 0; } ListNode node = new ListNode(val); node.next = dummy.next; dummy.next = node; } while (stack2.size() > 0) { val = stack2.pop().val + count; if (val >= 10) { val = val % 10; count = 1; } else { count = 0; } ListNode node = new ListNode(val); node.next = dummy.next; dummy.next = node; } return dummy.next; } }#顺序不对时首先想到栈#