两个栈,第一次将链表的元素全部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;
} 


京公网安备 11010502036488号