赞
踩
题目大意:删除一个单链表中的倒数第N个结点
题目分析:首先,获得单链表中的结点个数count,然后从前往后找到第count-N+1个结点,即我们要删除的结点,删除即可。时间复杂度:两次遍历单链表即可。
代码展示:
- # Definition for singly-linked list.
- # class ListNode:
- # def __init__(self, x):
- # self.val = x
- # self.next = None
-
- class Solution:
- def removeNthFromEnd(self, head, n):
- temp = head
- count = 0
- while temp!=None:
- temp = temp.next
- count += 1
- temp = head
- index = 0
- if count==n:
- return head.next
- else:
- while index!=(count-n-1):
- temp = temp.next
- index += 1
- temp.next = temp.next.next
- return head
方法二:时间复杂度:一次遍历单链表即可。 首先,用两个指针p,q分别指向头结点,然后先将其中一个指针p向后移动N个位置,再将p,q同时往后移动,当指针p移动到末尾时,q指针指向的结点即为我们要删除的结点。
代码展示:
- # Definition for singly-linked list.
- # class ListNode:
- # def __init__(self, x):
- # self.val = x
- # self.next = None
-
- class Solution:
- def removeNthFromEnd(self, head, n):
- p = head
- q = head
- index = 0
- while index!= n:
- p = p.next
- index += 1
- if p==None:
- return head.next
- while p.next!= None:
- p = p.next
- q = q.next
- q.next = q.next.next
- return head
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。