题目描述:
快慢指针法:
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @param n int整型
* @return ListNode类
*/
public ListNode removeNthFromEnd (ListNode head, int n) {
// write code here
// 定义一个哑巴节点
ListNode dummy = new ListNode(0);
dummy.next = head;
// 开始指针和结束指针同时只想哑巴节点
ListNode start = dummy;
ListNode end = dummy;
// 让结束指针先跑n步
for(int i = 0; i<n; i++){
end = end.next;
}
// 当结束指针跑到了最后一个节点
while(end.next!=null){
end = end.next;
start = start.next;
}
// 此时start的下一个节点就是要删除的节点,直接删除下一个节点即可
start.next = start.next.next;
return dummy.next;
}
}