《剑指Offer》刷题之链表中倒数第k个结点

《剑指Offer》刷题之链表中倒数第k个结点

我不知道将去向何方,但我已在路上!
时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 !
  • 题目
    输入一个链表,输出该链表中倒数第k个结点。
    如果该链表长度小于k,请返回空。
  • 示例
示例 1 :
输入:{1,2,3,4,5},1 
返回值:{5}
  • 代码1:
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def FindKthToTail(self , pHead , k ):
        if not pHead:
            return None
        left, right = pHead, pHead
        while right and k > 0:
            right = right.next
            k -= 1
        if k > 0:
            return None
        while right:
            left = left.next
            right = right.next
        return left
  • 算法说明:
    建立快慢指针leftright
    让快指针先走k步,如果链表结束,但是没有走完k步,也就是k>0返回空;
    让快慢指针同时走,直到快指针结束,返回慢指针所在位置即可。

猜你喜欢

转载自blog.csdn.net/qq_34331113/article/details/115302576