题解 | 链表相加(二)
链表相加(二)
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 p = head1; ListNode q = head2; while(p!=null){ stack1.push(p); p = p.next; } while(q!=null){ stack2.push(q); q = q.next; } int carry = 0; int val1,val2,value,total; ListNode newList = null; while(!stack1.isEmpty() || !stack2.isEmpty() || carry!=0 ){ if (!stack1.isEmpty()){ val1 = stack1.pop().val; }else{ val1 = 0; } if (!stack2.isEmpty()){ val2 = stack2.pop().val; }else{ val2 = 0; } total = carry + val1 + val2; carry = total / 10; value = total % 10; ListNode node = new ListNode(value); node.next = newList; newList = node; } return newList; } }
纯用栈实现