题目
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。
#例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点
思考
法一:1、先遍历统计链表长度,记为 n ;
2、设置一个指针走 (n-k)步,即可找到链表倒数第 k 个节点。
法二:使用双指针。
实现
#Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def getKthFromEnd(self, head: ListNode, k: int) -> ListNode:
first,last = head,head
for _ in range(k):
last = last.next
while last:
first,last = first.next,last.next
return first