5

この問題は基本的にアルゴリズム最適化問題です。

n個の要素を持つリストがあります。たとえば、{n1,n2,n3...nk} このリストはソートされており、次の番号niを見つける必要があります。

  1. n1<=ni<=nk
  2. 各番号からの距離の合計niは最小です。

可能な数の合計があるかもしれません(nk-n1+1)が、私たちの目的は、ni他のすべての数に最も近い数を見つけることです。

ブルートフォースアプローチはn1、nkまで繰り返し、すべてのリスト番号からの距離の合計を計算することができます。このようにして、リスト内の他のすべての番号に最も近い番号を簡単に見つけることができます。

しかし、このアプローチの問題は、時間の複雑さの点で良くないということです。このアプローチの時間計算量はですO(n^2)

時間計算量を減らしてこの問題を解決できる、これを行うためのより良い方法があると思います。

どんなアプローチでもありがたいです。

4

3 に答える 3

7

「距離」とdistance(a,b) = abs(a-b)は、中央値を見つける必要があることを意味します。

ソートされたリストで中央値を見つけるのはO(1)です。

于 2013-02-26T13:27:46.783 に答える
1

答えはROUND(SUM(n1、...、nk)/ k)である必要があります。

于 2013-02-28T07:53:39.290 に答える
0

平均を求めます...これにはO(n)が必要です。次に、リストを調べて、平均のniを見つけます(これもO(n)を取ります)...実際にはo(1 / 2n)のようになります

于 2013-02-26T13:33:02.277 に答える