题目

实现一种算法,找出单向链表中倒数第k个节点。返回该节点的值。
image.png

思路

双指针。
快指针先走k步,然后快慢指针一起走,当快指针走到链表末端,慢指针所指向的位置就是倒数第k个节点。

  1. # Definition for singly-linked list.
  2. # class ListNode:
  3. # def __init__(self, x):
  4. # self.val = x
  5. # self.next = None
  6. class Solution:
  7. def kthToLast(self, head: ListNode, k: int) -> int:
  8. if head is None: return
  9. slow, fast = head, head
  10. for _ in range(k):
  11. fast = fast.next
  12. while fast is not None:
  13. slow = slow.next
  14. fast = fast.next
  15. return slow.val