牛客网《剣指offer》之Python 2.7実装:チェーンテーブルの最後からk番目のノード

4627 ワード

タイトルの説明
チェーンテーブルを入力し、チェーンテーブルの最後からk番目のノードを出力します.
構想
k個のノードの速い、遅いポインタを使うといいです.この問題の面倒なところは境界条件にあります.他の異常な状況の考えは(これらの不思議なテスト例をどうやって知っているのか聞かないでください.彼らは私に人間として教えてくれたからです.):6,{1,2,3,4,5}0,{1,2,3,4,5}5,{}
彼らが何を出力すべきか考えてみましょう.の
コード#コード#
# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def FindKthToTail(self, head, k):
        # write code here
        if k == 0 or head == None:
            return None
        fast = head
        slow = head
        while fast != None:
            if k > 0:
                k = k - 1
            else:
                slow = slow.next
            fast = fast.next
        return None if k > 0 else slow

ハイプレイのコード
牛客網から来て、簡単で乱暴で、簡潔で、Pythonのリストの柔軟な特性を利用しました
# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def FindKthToTail(self, head, k):
        # write code here
        res=[]
        while head:
            res.append(head)
            head=head.next
        if k>len(res) or k<1:
            return
        return res[-k]