整数のセット (e1,e2,e3....) が与えられた場合、最小の ex-ey (セット内の任意の 2 つの要素の減算の最小の結果) を決定するという問題があります。これはアルゴリズムに関係していることは知っていますが、今はそれについての知識がありません。Javaでロジックまたはコードを提供することで、私を助けることができます。どうもありがとう!
質問する
112 次
2 に答える
7
私が考えることができる最も最適な解決策は、セットをソートし ( O(n log n)
)、セット内の連続する各ペアに対してペアワイズ比較を実行することです ( O(n)
)。
すべての要素を他のすべての要素と比較する「素朴な」アルゴリズムはO(n^2)
.
于 2013-05-15T11:30:46.130 に答える
-1
public class HelloWorld{
public static void main(String []args){
//System.out.println("Hello World");
int[] array = {10, 21, 323, 24, 45, 26, 47, 58, 69};
int[] resultPair = {10, 21}; //lets assume
for(int i=0; i<array.length; i++)
{
int minuend = array[i];
for(int j=0; j<array.length; j++)
{
int subtrahend = array[j];
int res = minuend - subtrahend;
if(res >= 0 && res < (resultPair[0] - resultPair[1]))
{
resultPair[0] = minuend;
resultPair[1] = subtrahend;
}
}
}
System.out.println();
// reverse check
for(int i=array.length-1; i>=0; i--)
{
int minuend = array[i];
for(int j=0; j<array.length; j++)
{
int subtrahend = array[j];
int res = minuend - subtrahend;
if(res >= 0 && res < (resultPair[0] - resultPair[1]))
{
resultPair[0] = minuend;
resultPair[1] = subtrahend;
}
}
}
System.out.println(resultPair[0]);
System.out.println(resultPair[1]);
}
}
于 2013-05-15T11:39:09.537 に答える