# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param pHead ListNode类 # @param k int整型 # @return ListNode类 # class Solution: def FindKthToTail(self , pHead: ListNode, k: int) -> ListNode: # write code here # k等于0直接返回空链表。 if k == 0: return None # 慢指针。 slow = pHead # 快指针。 fast = pHead # 快指针后移k-1次,当k-1 > 0时如果fast为空,则说明k大于原链表的长度。 while k-1 and fast: fast = pHead.next pHead = pHead.next k -= 1 # 如果链表长度小于k则返回空链表。 if k and pHead is None: return pHead # k-1 > 0并运行到这一步,说明k大于原链表的长度,应返回一个空链表。 if k-1: return slow # 快慢指针同时后移,慢指针指向的位置就是最后k个元素的头节点位置。 while fast.next: slow = slow.next fast = fast.next return slow