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