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

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

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

public static ListNode delN(ListNode pHead, int n) {
        if (pHead == null || n < 1) {
            return null;
        }
        //统计链表长度
        int size = 0;
        //n节点前节点指针
        ListNode nPre = null;
        //快指针
        ListNode fast = pHead;
        for (int i = 1; fast != null; i++) {
            //当快指针走了n步,慢指针开始走,那么就是i>=n,但这里慢指针定义为前指针所以应该慢走一步,i>n
            if (i > n) {
                if (nPre == null) {
                    nPre = pHead;
                }else {
                    nPre = nPre.next;
                }
            }
            //快指针遍历整个链表
            fast = fast.next;
            size++;
        }
        //n符合要求的话,这步可以省略
        if (n > size) {
            return pHead;
        }
        //删除头节点
        if (n == size) {
            return pHead.next;
        }
        //删除操作
        ListNode node = nPre.next;
        if (node != null) {
            ListNode next = node.next;
            node = null;
            nPre.next = next;
        }
        return pHead;
    }
全部评论

相关推荐

大佬们,在大厂实习的都是几百一天???
哈尔滨的移动城堡_:那几个有名的大厂都是300-400,小厂有更高的
点赞 评论 收藏
分享
05-09 14:45
门头沟学院 Java
点赞 评论 收藏
分享
05-12 22:16
已编辑
北京邮电大学 研发工程师
牛客302360988号:0offer+1 滴滴都不给我面 佬没投鹅吗,鹅应该很喜欢北邮吧
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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