22-链表中倒数第k个节点
问题
输入一个链表,输出该链表中倒数第k个节点。
为符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个节点。
例如,一个链表为 1->2->3->4->5->6 ,则倒数第3个节点是值为4的节点。
解题思路
双指针法:使用两个指针对链表进行遍历,两个指针步长为k-1,当前一个指针走到链表尾节点时,后一个指针正好指向倒数第k个节点
代码实现
class ListNode:
def __init__(self, value):
self.value = value
self.next = None
def last_k(head, k):
if head is None or k <= 0:
# 验证输入,对不符合条件的输入进行处理
return None
# 定义前一个指针
j = 0
probe = head
while j < k and probe is not None:
probe = probe.next
j += 1
# 如果前一个指针没有走过k步,说明链表长度不足k,应该进行处理
if j < k:
return None
# 定义后一个指针,双指针保持距离进行遍历
result = head
while probe is not None:
probe = probe.next
result = result.next
return result.value

浙公网安备 33010602011771号