19. 删除链表的倒数第 N 个结点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

进阶:你能尝试使用一趟扫描实现吗?

 

 

 

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:

输入:head = [1], n = 1
输出:[]
示例 3:

输入:head = [1,2], n = 1
输出:[1]

class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode rNode=reverseNode(head);
        if(n==1){
            rNode=rNode.next;
            return reverseNode(rNode);
        }
        
        int index=1;
        ListNode cur=rNode;
        while(cur.next!=null){
            index++;
            if(index==n){
                cur.next=cur.next.next;

            }else{
                cur=cur.next;
            }
        }
        return reverseNode(rNode);
    }

    public ListNode reverseNode(ListNode head){
        ListNode pre=null;
        ListNode cur=head;
        while(cur!=null){
            ListNode next=cur.next;
            cur.next=pre;
            pre=cur;
            cur=next;
        }
        return pre;
    }
}

 

 public ListNode removeNthFromEnd(ListNode head, int n) {
        if(head==null||n<=0){
            return head;
        }
        ListNode reverseHead=reverse(head);
        ListNode dumyHead=new ListNode(0);
        dumyHead.next=reverseHead;
        ListNode cur=dumyHead;
         //这里的条件是cur!=null &&cur.next!=null,画图好好理解决一下
        while(cur!=null && cur.next!=null){
           // System.out.println(cur.next.val);
            n--;
             if(n==0){
                 cur.next=cur.next.next;
             }
            cur=cur.next;
           
        }
       
        return reverse(dumyHead.next);
    
       
    }

    private ListNode reverse(ListNode head){
        if(head==null || head.next==null){
            return head;
        }

        ListNode pre=null;
        ListNode cur=head;
        //反转这里的条件是cur!=null 不是cur.next!=null,画图好好理解决一下
        while(cur!=null){
            ListNode next=cur.next;
            cur.next=pre;
            pre=cur;
            cur=next;
        }
        return pre;

    }

  

  

 

  

posted @ 2021-09-11 00:24  sherry001  阅读(32)  评论(0编辑  收藏  举报