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

Posted 五月的海湾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了19. 删除链表的倒数第 N 个结点相关的知识,希望对你有一定的参考价值。

链表有头结点

package leetcode;

public class demo_19 {
    //设置一个全局变量,记录倒数第几个节点需要被删除
    int index=1;
    public ListNode removeNthFromEnd(ListNode head, int n) {
        if(head.next!=null) {
            removeNthFromEnd(head.next,n);
            if(index==n) {
                if(index==1) {
                    head.next=null;
                }
                else {
                    head.next=head.next.next;
                }
            }
            index=index+1;
        }
        return head;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int nums[]= {1,2,3,4,5};
        ListNode l=new ListNode();
        l.creatnode(l, nums);
        demo_19 d19=new demo_19();
        d19.removeNthFromEnd(l, 5);
        l.printNode(l);
    }
}

链表无头结点

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    int index=0;
    public ListNode removeNthFromEnd(ListNode head, int n) {
        if(head == null){
            return null;
        }
        head.next = removeNthFromEnd(head.next,n);
        index=index+1;
        if (index == n){
            return  head.next;
        }
        return head;
    }
}

 

以上是关于19. 删除链表的倒数第 N 个结点的主要内容,如果未能解决你的问题,请参考以下文章

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

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

算法leetcode|19. 删除链表的倒数第 N 个结点(rust重拳出击)

算法leetcode|19. 删除链表的倒数第 N 个结点(rust重拳出击)

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

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