ファストトラック:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/
トピック:
入力されたリンクリスト、リンクリストの出力最後から二番目のノードk。ほとんどの人々の習慣を満たすために、この質問は、ノードのリストの最後にある最後から二番目のノードであること、1からカウント。例えば、リンクされたリストは、6つのノードを有し、ノードがゼロからスタート、その値が順次1,2,3,4,5,6です。ノードのリストは、第3のノード4の逆数です。
例:
リストが与えられる:1-> 2-> 3-> 4-> 5、及びk = 2。
結果のリストの4-> 5。
分析:要求の対象は、最初のk個のノードへのポインタを見つけることです。私たちは、TMPのポインタを構築し、彼はk回行かせ、その後、tmpが空になったときに、先頭ポインタが、所望されるヘッドポインタtmpのポインタが同時に行くことをさせることができます
Oの時間複雑度(N)Oの空間複雑度(1)
/ * * *単独リンクリストのための定義。 *構造体ListNode { * INTヴァル。 * ListNode *次の; * ListNode(INT X):ヴァル(x)は、次の(NULL){} *}。 * / クラスソリューション{ パブリック: ListNode * getKthFromEnd(ListNode *ヘッド、INT K){ int型の予備= 0、最後= 0 。 ListNode * TMP = 新しいListNode(); TMP = ヘッド。 一方、(PRE =!K){ TMP = tmp-> 次。 事前 ++ ; } 一方(TMP =!NULL){ TMP = tmp-> 次。 ヘッド =頭部> 次。 } 戻りヘッド。 } }。