剑指offer-python

面试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  
上一篇 下一篇

猜你喜欢

热点阅读