快慢指针

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

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

删除倒数第n个节点,就是删除正数第m-n+1个节点,所以可以定义一个快指针,让它先走n步,快指针距离链表尾部还有m-n步,然后慢指针开始移动,当快指针移动到最后一个节点的时候,慢指针走走到了第m-n个节点,然后直接删除即可

    public ListNode removeNthFromEnd (ListNode head, int n) {
        // write code here
                if (head == null){
            return null;
        }

        ListNode node = new ListNode(-1);

        node.next = head;

        ListNode p = node;
        ListNode q = node;


        while (q.next != null){

            while (n-- > 0){
                q = q.next;
            }
            if (q.next == null){
                break;
            }
            p = p.next;
            q = q.next;
        }

        p.next = p.next.next;

        return node.next;
    }
全部评论

相关推荐

小浪_Coding:1. 个人技能排版太乱, 写的技术栈太浅了, 跟测试,自动化相关的太少; 2. 项目开发类的太简单没有亮点, 算法类的项目建议只放一个,最好有自动化,CI/CD, pipline的项目, 需要更换; 3.整体排版需要优化, SOOB打招呼都需要注意等.
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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