输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。
例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 2 个节点是值为 4 的节点。
思路:双指针,使指针1走到链表尾部时,指针2指向需要查找的节点。
两个指针同时指向链表头。指针1先走k步,之后指针1和指针2同时移动,当指针1指向链表尾部时,指针2刚好指向需要查找的节点。
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def getKthFromEnd(self, head, k):
"""
:type head: ListNode
:type k: int
:rtype: ListNode
"""
index1 = head
index2 = head
i = 0
while i < k:
index1 = index1.next
i += 1
while index1 is not None:
index1 = index1.next
index2 = index2.next
return index2