Given a linked list, remove the nth node from the end of list and return its head.
For 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.
题目大意为从一个链表中删除倒数第n个数。思路为设置两个指针,一个先向前遍历n个,然后两个指针在一起向前遍历,当右边的指针到达链表末尾时,左边的指针所指的就是要删除的。需要的是当要删除的是头节点时需要特殊处理。
/**
* 双指针
*/
public ListNode removeNthFromEnd(ListNode head, int n) {
//判断非空
if(head==null||head.next==null)
return null;
//
ListNode right=head;
ListNode left=head;
for(int i=0;i<n;i++){
right=right.next;
}
if(right==null){//当要删除的为头结点时
head=head.next;
return head;
}
while(right.next!=null){
left=left.next;
right=right.next;
}
left.next=left.next.next;
return head;
}