题目
输入一个链表,输出该链表中倒数第k个结点。
思路
- 计算出链表的长度count
- 计算出正向的index是多少(count-k)
- 然后用for循环遍历到index
ps:注意还要考虑k大于实际长度的情况,直接return,这个情况在实际编写过程中在这里插入代码片容易漏掉
代码
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def FindKthToTail(self, head, k):
# write code here
count=0
tmp=head
while tmp:
count+=1
tmp=tmp.next
if(k>count):
return
index=count-k
k_p=head
for i in range(index):
k_p=k_p.next
return k_p
其他方法
快慢指针的方法,知道了导数第k个,其实就知道了导数第k和最后一个之间的间隔,将这个间隔的两端设成两个快慢指针,然后平移即可,这样复杂度是严格的O(N),上边方面的复杂度是O(2*N)。如下图所示: