题解 | #删除链表的倒数第n个节点#

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

http://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6

快慢指针。删除链表倒数第n个节点。

public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @param n int整型 
     * @return ListNode类
     */
    public ListNode removeNthFromEnd (ListNode head, int n) {
            //方法二:快慢指针
    if (head == null || head.next == null) return null;
    ListNode runner = head,chaser = head;//快慢指针
    while (n > 0){//让快指针前进n步
        runner = runner.next;
        n--;
    }
    if (runner == null) {//如果快指针已经为空,说明头结点即为待删除的结点
        return head.next;//直接返回头结点的下一个结点
    }
    while (runner.next != null){//快慢指针同时后移,直到快指针下一结点为空时停下
        runner = runner.next;
        chaser = chaser.next;
    }
    chaser.next = chaser.next.next;//此时慢指针的后继结点刚好是待删除的结点
    return head;
    }
}
全部评论

相关推荐

自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
宇算唯航:目测实缴资本不超100W的小公司
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务