您的位置:首页 > 其它

链表:删除倒数第n个节点

2018-03-04 21:40 756 查看
    给定一个链表,删除倒数第n个节点。要求只遍历一遍
    如链表:1->2->3->4->5,n=2,则结果为 1->2->3->5。

    思路:设置两个指针,一个先向前移动n个节点,然后两个同步向前移动,直到前一个指针到达链表末端,则后一个指针的下一个节点就是要删除的节点。

    注意:当删除的节点是链表头时是特殊情况,此时前一个指针已经移动到了链表末尾的null节点上,需特别处理。
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode fast = head;
ListNode slow = head;
for(int i = 0; i<n; i++)
fast = fast.next;
if(fast == null)
return head.next;
while(fast.next != null){
fast = fast.next;
slow = slow.next;
}
slow.next = slow.next.next;
return head;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: