# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
"""双指针的关键是如何保持指针的距离为k-1"""
class Solution:
def FindKthToTail(self, head, k):
# write code here
if head == None or k==0:
return None
phead = head
pbehind = head
for i in range(k-1): #range的数字之差代表元素个数
if phead.next == None:
return None
else:
phead = phead.next
while phead.next != None: #倒数第二个节点依然满足,因此最终的phead是最后一个,最终的pbehind就是倒数第k个
phead = phead.next
pbehind = pbehind.next
return pbehind
"""直接用列表实现"""
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def FindKthToTail(self, head, k):
# write code here
l = []
while head:
l.append(head)
head = head.next
if len(l) < k or k < 1:
return None
return l[-k]