题目:
Given a linked list, remove the n-th node from the end of list and return its head.
Example:
Given linked list: 1->2->3->4->5, and n = 2.
After removing the second node from the end, the linked list becomes 1->2->3->5.
思路:
LinkedList题型基本上一开始都new一个新的节点0接在head前面。
然后两个指针,一个fast一个slow
先把fast往后移n个。
然后两个指针再同时向后移动。直到fast=null就是倒数第n个了。
Code:
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode start = new ListNode(0);
ListNode slow = start;
ListNode fast = start;
slow.next = head;
for(int i=0;i<n+1;i++){
fast = fast.next;
}
while(fast!=null){
fast = fast.next;
slow = slow.next;
}
slow.next = slow.next.next;
return start.next;
}