リンクされたn個のノードのリストがあります。k番目のノードを削除し、その中に要素を表示します。これは、nの値が比較的小さく、問題の複雑さが問題でない場合は簡単です。リンクされたリストの10000番目のノードを削除する
問題は、n> = 200000のリンクされたリストにn個のノードがあり、比較的大きな値(たとえばk = 150000)のノードを削除したい場合です。
この問題の通常の解決策は、リンクリスト全体を横断してノードを削除することです(ソリューションの複雑さはO(n)です)。この問題の他の解決策は2つのポインタを持つことができますが、それでも最適な解決策ではありません。
私は、最適なソリューションを探しており、結果として最小限の時間で結果を提供します。
私の質問は明らかです。
これは単なるインタビューの質問ですか、実際のシナリオがありますか?後であれば、あなたの支配下にあるもののような他のものについて、より多くの洞察を与えることができますか? –
単独リンクされたリストをお持ちの場合、唯一の選択はO(n)ソリューションです。あなたは情報を追加するためにデータ構造を変更することが許されていますか?答えの1つによって示唆されるように、中間ノードへの参照のリストを維持するのと同じですか? –