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

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

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

示例:

给定一个链表:1->2->3->4->5, 和n= 2.当删除了倒数第二个节点后,链表变为1->2->3->5.

说明:

给定的 n保证是有效的。

进阶:

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

# Definition for singly-linked list.

# class ListNode:

#    def __init__(self, x):

#        self.val = x

#        self.next = None

class Solution:

    def removeNthFromEnd(self, head, n):

        """

        :type head: ListNode

        :type n: int

        :rtype: ListNode

        """

        m = self.digui(head,n)

        if isinstance(m,int):

            head = head.next

        else:

            head = m

        return head

    gg = False

    def digui(self,head, n):

        if head.next:

            self.gg=True

            m = self.digui(head.next, n)

            if m == (n-1):

                head.next = head.next.next

                return head

            elif isinstance(m,int) and  m < (n-1):

                return m+1

            else:

                return head

        else:

            if  0 == (n-1) and self.gg==False:

                return

            else:

                return 0


19. 删除链表的倒数第N个节点_第1张图片

你可能感兴趣的:(19. 删除链表的倒数第N个节点)