当前位置:   article > 正文

LeetCode19. 删除链表的倒数第N个节点_删除链表的倒数第n个节点 python

删除链表的倒数第n个节点 python

题目大意:删除一个单链表中的倒数第N个结点

题目分析:首先,获得单链表中的结点个数count,然后从前往后找到第count-N+1个结点,即我们要删除的结点,删除即可。时间复杂度:两次遍历单链表即可。

代码展示:

  1. # Definition for singly-linked list.
  2. # class ListNode:
  3. # def __init__(self, x):
  4. # self.val = x
  5. # self.next = None
  6. class Solution:
  7. def removeNthFromEnd(self, head, n):
  8. temp = head
  9. count = 0
  10. while temp!=None:
  11. temp = temp.next
  12. count += 1
  13. temp = head
  14. index = 0
  15. if count==n:
  16. return head.next
  17. else:
  18. while index!=(count-n-1):
  19. temp = temp.next
  20. index += 1
  21. temp.next = temp.next.next
  22. return head

方法二:时间复杂度:一次遍历单链表即可。 首先,用两个指针p,q分别指向头结点,然后先将其中一个指针p向后移动N个位置,再将p,q同时往后移动,当指针p移动到末尾时,q指针指向的结点即为我们要删除的结点。

代码展示:

  1. # Definition for singly-linked list.
  2. # class ListNode:
  3. # def __init__(self, x):
  4. # self.val = x
  5. # self.next = None
  6. class Solution:
  7. def removeNthFromEnd(self, head, n):
  8. p = head
  9. q = head
  10. index = 0
  11. while index!= n:
  12. p = p.next
  13. index += 1
  14. if p==None:
  15. return head.next
  16. while p.next!= None:
  17. p = p.next
  18. q = q.next
  19. q.next = q.next.next
  20. return head

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/990710
推荐阅读
相关标签
  

闽ICP备14008679号