题解 | #删除链表的倒数第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;
    }
全部评论

相关推荐

点赞 评论 收藏
分享
牛客83700679...:简历抄别人的,然后再投,有反馈就是简历不行,没反馈就是学历不行,多投多改只要技术不差机会总会有的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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