LEETCODE | PYTHON | 19 | 删除链表的倒数第N个结点

LEETCODE | PYTHON | 19 | 删除链表的倒数第N个结点

1. 题目

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

LEETCODE | PYTHON | 19 | 删除链表的倒数第N个结点_第1张图片

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/linked-list-cycle-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 代码

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        
        #初始化
        cur = head
        l = 0

        #计算链表长度
        while cur != None:
            l = l + 1
            cur = cur.next
        
        #计算删除节点的位置
        pos = l - n + 1

        #找到删除节点的位置
        #若删除头节点
        if pos == 1:
            tmp = head.next
            head = tmp
        
        #若删除其他节点
        else:
            index = 1
            cur = head
            #print(cur)
            while index+1 < pos:
                index = index + 1
                cur = cur.next
            
            #print(pos,cur)
            cur.next = cur.next.next
        
        return head        

你可能感兴趣的:(leetcode-python,链表,leetcode,数据结构)