解法:快慢指针
快指针先走n步,然后再和慢指针一起走,此时当快指针走完的时候,慢指针则刚好走到倒数的第n+1个结点,跳过倒数的第n个结点
public class Solution {
/**
*
* @param head ListNode类
* @param n int整型
* @return ListNode类
*/
public ListNode removeNthFromEnd (ListNode head, int n) {
// write code here
if(head==null || n<1){
return null;
}
ListNode fast=head;
ListNode slow=head;
for(int i=0;i<n;i++){
fast=fast.next;
}
//如果n的值等于链表的长度,直接返回去掉头结点的链表
if(fast==null){
return head.next;
}
//走到倒数的第n+1个结点
while(fast.next!=null){
fast=fast.next;
slow=slow.next;
}
//跳过倒数的第n个结点
slow.next=slow.next.next;
return head;
}
}
京公网安备 11010502036488号