2

n ノードのリンク リストがあります。k 番目のノードを削除し、その中に要素を表示したいと考えています。n の値が比較的小さく、問題の複雑さが問題にならない場合、これは簡単です。

問題は、リンクされたリストに n >=200000 のノードがあり、比較的大きな値 (k=150000 など) のノードを削除したい場合です。

この問題の通常の解決策は、リンクされたリスト全体をトラバースし、ノードを削除することです (解決策の複雑さは O(n) です)。ただし、これは単純で簡単な解決策であり、より多くの時間がかかります。この問題に対する他の解決策は、2 つのポインターを持つことですが、それでも最適な解決策ではありません。

最適で、最小限の時間で結果を提供するソリューションを探しています。

私の質問が明確であることを願っています。助けが要る..

4

3 に答える 3

0

標準のリンクされたリストでは、(追加のポインターなしで) リストの後の要素にすばやくアクセスする方法はありません。これは、前述の要素への参照がその直前の要素でのみ発生するためです。

インデックスがわかっている要素に頻繁にアクセスする必要があることがわかっている場合は、配列を使用する方がよいでしょう。(質問を読み直しても、これはまだ要素を削除するのには適していません)

于 2016-10-13T05:38:51.973 に答える