题目:
输入一个链表,输出一个链表,该输出链表包含原链表中从倒数第k个结点至尾节点的全部节点。如果该链表长度小于k,请返回一个长度为 0 的链表。
示例:
输入:{1,2,3,4,5},1
返回:{5}
思路:
遍历整个列表,把链表中所有元素储存在数组res中
代码:
class Solution:
def FindKthToTail(self , pHead , k ):
# write code here
if pHead is None:
return False
h=pHead
res=[]
while h:
res.append(h)
h=h.next
if k>len(res) or k<0:
return None
return res[-k]
思路:
设置两个指针指向头结点。然后快指针往前移动k-1步(这是为了两个指针之间相差k)。最后快慢指针同时前进,当快指针到达末尾时,慢指针正好指向倒数k结点上
代码:
class Solution:
def FindKthToTail(self , head , k ):
# write code here
if head is None or k <= 0:
return None
p = q = head
i = k - 1
while i > 0 and p:
p = p.next
i -= 1
if p is None:
return None
while p.next:
p = p.next
q = q.next
return q