题目
描述
输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。
如果该链表长度小于k,请返回一个长度为 0 的链表。
数据范围:
0≤n≤10
0≤k≤10
要求:空间复杂度 O(n),时间复杂度 O(n)
进阶:空间复杂度 O(1),时间复杂度 O(n)
思路
先遍历一遍知道链表的长度,知道倒数的第k个位置在哪里,然后再正序找就行了。
代码
python代码:
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param pHead ListNode类
# @param k int整型
# @return ListNode类
#
class Solution:
def FindKthToTail(self , pHead: ListNode, k: int) -> ListNode:
# write code here
if not pHead:
return None
count = 0
dummy = pHead
while(dummy):
dummy = dummy.next
count+=1
length = count - k
if length < 0:
return None
while(length != 0):
pHead = pHead.next
length -= 1
return pHead
c++代码:
无