私はアルゴリズムコースのプロジェクトに取り組んでいます。私は完全に邪魔しています。代入は、O(n^2 * log(n))時間内のi + j = k + lの配列の4つの数のすべての集合を見つけることです。n^2 * log(n)時間に4つの数字を持つ3sumの変形?
これは3sumの問題と似ていますが、i + j + k = 0の配列のすべてのセットを見つける必要があります。私たちは、この問題の解を、2(n^2時間)のすべての固有の対を反復し、ソートされた配列のバイナリ検索を使用してO(n^2 * log問題(log(n)time)を満たす値を見つける。
しかし、この時点で4つの数字の問題がどのように解決されたかはわかりません。私は複雑さのlog(n)がバイナリ検索から来ていることを安全に推測していると思います。これは最後のものに使用します。しかし、それはn^2時間で3のすべての可能な組み合わせを反復しなければならないことを意味します。これは可能ではないと思います。
私は自分の仕事をしてくれる人を探しているわけではありませんが、これがどのように解決できるかを知っていれば、正しい方向に優しいタップを与えることができます。ありがとう。
編集:ソートを使用して解決する必要があることに注意してください。私がそれをしたら、ハッシングを使って速くする別の実装を書かなければなりませんが、自分でそれをうまくやることができると思います。私は最初にソートすることでどのように問題を解決できるかを理解する必要があります。
何かあなたが配列を解析し、各ペアの和をキー値としてmapに格納するとします。例:Map(key =(sum(pair))、value = pair location) 解析後、キー衝突のあるリストを得ることができます:) – amitmah
配列の数字は一意ですか?数字「i、j、k、l」を繰り返すことはできますか? –
はい、私はかなりユニークであると確信しています。割り当てに明示的には記載されていませんが、例のテストファイルで重複を見つけることができませんでした –