快慢指针

快指针先移到慢指针的前k个节点,然后快慢指针同时移动,当快指针到达链尾,慢指针即为倒数第k个节点。

#     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
        low,fast = pHead,pHead
        # 快指针先前移k个节点
        for i in range(k):
            if fast == None: return None
            fast = fast.next
        # 快慢指针同时移动,快指针到达末尾,慢指针即为倒数k个节点
        while fast:
            low = low.next
            fast = fast.next
        return low