[解決済み] 2つのリンクリストがマージされるかどうかをチェックします。もしそうなら、どこで?
質問
この質問は古いかもしれませんが、回答が思いつきませんでした。
異なる長さの2つのリストがあるとします。 点で結合され 合流点はどこにあるのでしょうか?
条件です。
- 長さがわからない
- 各リストを一度だけパースする必要があります。
どのように解決するのですか?
もし
- は、quot; modification is not allowed" は、quot; you may change but in the end in the restored" という意味であり、また
- はリストを正確に反復することができます。 2 回
の場合、以下のアルゴリズムが解決策となります。
まず、数字です。 最初のリストが長さ
a+c
で、2 番目のリストが長さ
b+c
であり、ここで
c
は共通の尾部(マージポイント以降)の長さである。 これらを次のように表すことにする。
x = a+c
y = b+c
長さが分からないので、計算します。
x
と
y
を追加で反復させることなく実行できます。
次に、それぞれのリストを繰り返し、繰り返しながら逆引きをします もし両方のイテレータが同時にマージポイントに到達したら、単に比較することでそれを見つけます。 そうでなければ、一方のポインタがもう一方のポインタよりも先にマージポイントに到達することになります。
その後、もう一方のイテレータがマージポイントに到達しても、共通の末尾に進むことはありません。代わりに、前にマージポイントに到達したリストの元の先頭に戻ります! ですから、変更されたリストの最後 (すなわち、もう一方のリストの元の先頭) に到達する前に、彼は
a+b+1
の繰り返しをすることになります。 これを
z+1
.
最初にマージポイントに到達したポインタは、リストの最後に到達するまで反復し続けます。 このポインタが行った反復の回数は計算され、次のようになります。
x
.
次に、このポインタは反復して戻り、再びリストを反転させます。 しかし今度は、元々開始したリストの先頭には戻りません! その代わり、もう一方のリストの先頭に行きます! このポインタの繰り返し回数は次のように計算されます。
y
.
ということで、次のような数字がわかります。
x = a+c
y = b+c
z = a+b
ということがわかります。
a = (+x-y+z)/2
b = (-x+y+z)/2
c = (+x+y-z)/2
これで問題解決。
関連
-
[解決済み] 整数の絶対値の計算方法
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] リスト内の重複を削除する
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】アルゴリズムの時間複雑性を求めるには?
-
[解決済み】リンクリストのループを検出する方法は?
-
[解決済み】Redisに使用されている基礎的なデータ構造は何ですか?
-
[解決済み] リンクリストはどのような場合に有効か?
-
[解決済み] 平均シフトを用いた画像分割の説明
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】クイックソートとヒープソートの比較
-
[解決済み] アルゴリズムAの実行時間は少なくともO(n²)である - なぜ無意味なのか?
-
[解決済み] グラフにおいて最小容量が最大となる経路の探索
-
[解決済み] 放物線を点の集合にフィットさせる最速の方法?
-
[解決済み] 2進数が3で割れているかどうかを知るには?
-
[解決済み] log(n!)=Θ(n-log(n))でしょうか?
-
[解決済み] 与えられた数列の中に現れない最小の正の整数を求めよ。
-
[解決済み] あるアルゴリズムの計算量がO(log log n)になる原因は何でしょうか?
-
[解決済み] 任意の二分木における2つのノードの最小公倍数の先祖を見つけるには?
-
[解決済み] ヒューリスティックとアルゴリズムの違いは何ですか?