1

各ノードが数字からの数字であるようなリンクリストが与えられます。

例:番号が1234の場合、対応するリンクリストは次のとおりです。

1 -> 2 -> 3 -> 4 -> [\]

問題は、この数に1を加えることです。したがって、出力は次のようになります。

1 -> 2 -> 3 -> 5 -> [\]

O(n)空間でO(n)時間で再帰的に行うことができます。O(logn)時間計算量のソリューションを最適化することは可能ですか?

更新: nは合計桁数です。

4

3 に答える 3

2

いいえ、追加のデータ構造がない場合に限ります。

リストの最後のノードは常に変更され、アルゴリズムがそこに到達するまでにO(n)時間がかかるため(追加のデータ構造がない場合はリスト全体を追跡する必要があります)、O(n)が下位になります。バウンド。

于 2012-12-10T09:57:22.283 に答える
0

nですか?が桁数の場合n、解決策はないと思いますO(log(n))

nが数値自体である場合、桁数はすでにO(log(n))です。

于 2012-12-10T09:54:40.340 に答える
0

操作を実行する前に各番号をトラバースする必要があります。他の方法はありませんが、要素の総数がわかっているため、head-> next-> next->next...のようにすべての移動操作を記述できます。 forループの代わりに同じ行に。これにより、forループの実行による過負荷時間の複雑さが回避されるため、プロセスが高速化されます。

于 2012-12-11T11:00:25.700 に答える