「ソードフィンガーオファー」のリンクリストの下からk番目のノード

「ソードフィンガーオファー」のリンクリストの下から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
  • アルゴリズムの説明:高速ポインタ
    低速ポインタのleft合計を確立しますright
    リンクリストが終了したが、kステップが完了していない場合、つまりk>0戻った場合は、高速ポインタを最初にkステップ移動させます高速ポインタ
    と低速ポインタを、同時に、高速ポインタが終了し、低速ポインタの位置に戻ります。

おすすめ

転載: blog.csdn.net/qq_34331113/article/details/115302576