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

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

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

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @param n int整型 
     * @return ListNode类
     */
    public ListNode removeNthFromEnd (ListNode head, int n) {
        if (head == null || n == 0) return head ;
        ListNode pre01 = new ListNode(-1) ;//根节点(可以消除对根节点被删除的情况)
        pre01.next = head ;
        ListNode fast = pre01 ;
        int i = 1 ;
        while(i <= n) {
            fast = fast.next ;
            i ++ ;
            if(fast == null) {
                return null ;
            }
        }
        ListNode slow = head ;//slow最终为待删除的节点
        ListNode slow_pre = pre01 ;//slow_pre最终为slow的前一个节点
        while(fast.next != null) {
            slow_pre = slow ;
            slow = slow.next ;
            fast = fast.next ;
        }
        slow_pre.next = slow_pre.next.next ;
        return pre01.next ;
        
    }
}

一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

hwwhwh:同双非,有大厂实习其实也没啥用,主要看运气,等就行了
点赞 评论 收藏
分享
Jcwemz:都快过年了,就没几家真正招的,100个投递两个面试算是正常的了 加上你的简历,其实你不能很好的描述你自己是做什么的 两个月的时间,你就负责到自动化的内容啦?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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