2016-04-23 14 views
1

私は、私が望む数量を置く配列を持っています。それは5であっても100であっても構いません。 2つの数字の間。Javaの配列内の数字の差の和を取得

私が開発したいのは、配列に行く方法で、getDifferenceメソッドを使用すると、1番目と2番目の番号、2番目の番号と3番目の番号、3番目の番号と4番目の番号などの差異が計算されます配列の終わりに達するまで、そしてその差の合計を返します。何か案は?

int[] myIntArray = new int[x numbers]; 

public int getDifference(int num1, int num2) { 
    return num2-num1;  
} 

public int getSumDifference(int[] numbers) { 
    ... 
} 

私はこの方法が間違っていることを知っています、私の見解をすることです。

+1

'getDiference'(スペルが間違っています)というメソッドがなぜあるのか分かりません。単純に' -'演算子を使ってメソッドを呼び出すことの非効率性を伴わずに2つの数値の差を得ることができます。 – hexafraction

答えて

7

IMHOは、この問題を軽減するために基本的な計算を使用することです。サイズNの配列のために、あなたが計算したいと思います:

S = (a[1] - a[2]) + (a[2] - a[3]) + ... + (a[N-1] - a[N]) 

をので、あなたはブラケットを開き、問題を減らす場合は、取得したい:

S = a[1] - a[N] 

をJavaでこれを表現すべき十分に簡単である:abcd

public int getSumDiference(int[] numbers){ 
    return numbers[0] - numbers[numbers.length - 1]; 
} 
6

はあなたのリストには、4つの値を持っているとしましょう。
違いはa - b,b - c,c - dです。
これらの合計は(a - b) + (b - c) + (c - d)です。
括弧を削除すると、a - b + b - c + c - dが得られます。
-b + bは何もないので、a - dとなります。

結果:最初の値から最後の値を引いた値

すべての中間計算をスキップするだけで、時間の無駄です。

関連する問題