题解 | #链表相加(二)#
链表相加(二)
https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b
/** * @author Lu.F * @version 1.0 * @date 2022/10/8 22:06 */ public class Solution301 { /** * 运用栈 先进后出特点 * @param head1 ListNode类 * @param head2 ListNode类 * @return ListNode类 */ public ListNode addInList (ListNode head1, ListNode head2) { // write code here if (head1 == null){ return head2; } if (head2 == null){ return head1; } // 栈 Stack<Integer> stack1 = new Stack<>(); Stack<Integer> stack2 = new Stack<>(); while (head1 != null){ stack1.push(head1.val); head1 = head1.next; } while (head2 != null){ stack2.push(head2.val); head2 = head2.next; } // 进位 int temp = 0; ListNode pHead = new ListNode(-1); ListNode head = pHead.next; while (!stack1.isEmpty() || !stack2.isEmpty()){ int val = temp; if (!stack1.isEmpty()){ val += stack1.pop(); } if (!stack2.isEmpty()){ val += stack2.pop(); } // 头插法 temp = val/10; ListNode node = new ListNode(val%10); node.next = head; head = node; } // 头插法 if (temp > 0){ ListNode node = new ListNode(temp); node.next = head; head = node; } return head; } }