题目描述
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
算法思路
简单粗暴的:
class Solution:
def kthToLast(self, head: ListNode, k: int) -> int:
ls=[]
while head:
ls.append(head.val)
head=head.next
return ls[-k]
快慢指针:
class Solution:
def kthToLast(self, head: ListNode, k: int) -> int:
fast = head
slow = head
while k > 0:
fast = fast.next
k -= 1
while fast != None:
fast = fast.next
slow = slow.next
return slow.val
让快指针先行K步,然后快慢指针同步,当快指针走到尽头时,慢指针刚好是第K个节点。