当前位置: 代码迷 >> 综合 >> 每天一道leetecode:19、删除链表的第N个节点(medium)
  详细解决方案

每天一道leetecode:19、删除链表的第N个节点(medium)

热度:12   发布时间:2023-12-14 15:03:34.0

趁着刚来到实验室,赶紧把今天的leetecode任务搞定,哈哈哈哈

链表哦,因为上一个题不知道为啥不对,看到这个竟然有点很爽的感觉,虽然这道题对了,但是我还是不知道为啥上一道题不对。。。哭哭

好吧,这道题很简单,不像是中等题目。

思路:设置两个指针,让这两个指针之间的距离为n,这样当后面的指针走到链表末尾的时候,前面的指针指的就是要删除元素的前驱节点,这样直接删除要删除的节点即可。

# Definition for singly-linked list.
class ListNode:def __init__(self, x):self.val = xself.next = None
'''
思路很清晰:
找两个指针,让这两个指针的距离为n+1,那么当一个指向最后的时候,另一个就指向要删除的节点的前驱节点
'''def removeNthFromEnd(head, n):global  k, i, jk = headi = headnum = 1j = Nonewhile head != None:if head.next != None:head = head.nextnum += 1if j != None:j = j.nextif num - n == 1:j = kelse:breakif num == n:k = k.nextelse:j.next = j.next.next#print(k.val,j.next.val,head.val)# while k != None:#      print(k.val)#      k = k.nextreturn kp = ListNode(1)
p.next = ListNode(2)
p.next.next = ListNode(3)
p.next.next.next = ListNode(4)
p.next.next.next.next = ListNode(5)removeNthFromEnd(p, 4)

  相关解决方案