面试15:倒转k链表
2018-06-24 本文已影响0人
fighting_css
【题目描述】输入一个链表,输出该链表中倒数第k个节点。
【思路】
采用两个指针,p1比p2快k步,当p1到达None时,p2刚好是倒数第k个节点。
1->2->3->4->5->None
注意边界:
当链表没有k个节点时,返回None
【代码】
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def FindKthToTail(self, head, k):
# write code here
if head==None:
return head
#考虑k小于等于0情况
if k<=0:
return
#指针p1先走k-1步,当p1为最后一个节点即倒数第一个节点时,p2为倒数第k个节点
p1 = head
p2 = head
for i in range(1,k):
p1 = p1.next
#若链表没有k个节点,则返回None
if p1==None:
return
while p1.next!=None:
p1 = p1.next
p2 = p2.next
return p2