两个栈,第一次将链表的元素全部push进去第一个栈内,
然后从第一栈pop出n个元素,并push进第二个栈内。
要注意假如链表总共有n个元素的话,会出现栈为空的错误,所以要在第一个元素前面添加一个temp;
public static ListNode removeNthFromEnd (ListNode head, int n) { // write code here Stack<ListNode> stack1 = new Stack<>(); ListNode temp = new ListNode(-1); temp.next = head; Stack<ListNode> stack2 = new Stack<>(); while (head!=null){ stack1.push(head); head = head.next; } stack1.push(temp); for (int i = 0; i < n; i++) { stack2.push(stack1.pop()); } stack1.peek().next = stack2.peek().next; return temp.next; }