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

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

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

思路:重新创建两个ListNode实例来指向head作计算长度和删除的操作,尽量少的直接用head操作。
这里需要考虑的问题:
1.当倒数第n个节点是链表的第一个节点,那么就没有del.next=del.next.next了,因为删除第一个节点只需要返回head.next即第一个节点之后的即可。
2.循环应该从i=1开始,且判断的是i是否等于size-n(长度-n)即是否到达删除的节点

import java.util.*;

    public ListNode removeNthFromEnd (ListNode head, int n) {
        ListNode del=head;    //作删除使用
        ListNode headSize=head;  //作计算长度使用
        int size=0;
        while(headSize!=null){
            size++;
            headSize=headSize.next;
        }
        if(size==n) {
            return head.next;
        }
        int i=1;
        while(i!=size-n){
            i++;
            del=del.next;
        }
        del.next=del.next.next;
        return head;
    }
全部评论

相关推荐

不愿透露姓名的神秘牛友
04-23 19:42
可乐不加冰777:匿名了,还写联系方式
点赞 评论 收藏
分享
03-02 17:52
已编辑
北京航空航天大学 Java
狠狠学代码:布什哥们,这科研经历真来互联网卷Java啊,真干两年找不到工作咋整,这科研成果读个博去高校不好吗这实力太强了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务