题解 | #链表中倒数最后k个结点#
链表中倒数最后k个结点
https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9
# 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
查看16道真题和解析