题目
输入一个链表,输出该链表中倒数第k个结点。
思路
反转链表,寻找第K个节点。
解答
方法一
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def FindKthToTail(self, head, k):
if head is None or head.next is None:
return head
pre = None # 指向上一个节点
while head:
# 先用temp保存当前节点的下一个节点信息
temp = head.next
# 保存好next之后,便可以指向上一个节点
head.next = pre
# 让pre,head指向下一个移动的节点
pre = head
head = temp
# 寻找第k个元素的位置
for i in range(1, k):
pre = pre.next
temp = pre
return temp.val
思路
k如果大于链表长度,返回None
k如果小于链表长度,定义两个变量,两个变量之间间隔k
方法二
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def FindKthToTail(self, head, k):
p = head
q = head
for i in range(k):
if p == None:
return None
p = p.next
while p != None:
p = p.next
q = q.next
return q.val