現在、私は比較のためにforループを実行するのと同じ古い方法を知っていますが、それを実行する方法がより効率的ですどちらの配列も長さがnなので、今はO(n)時に実行されています。1 int [] arrayのすべての値が別のint []配列よりも小さいか等しい場合、比較するためのエレガントな方法(簡潔かつ効率的)はありますか?
答えて
はい、配列の中の最大の整数が配列の最小整数よりも小さい場合、です。
あなたがYESの場合、第二の各値に最初の配列のすべての値を比較している場合は、場合、Java 8
int[] arrayA = ...;
int max = Arrays.stream(arrayA).max().getAsInt();
int[] arrayB = ...;
int min = Arrays.stream(arrayB).min().getAsInt();
ソートせずに最高値と最低値を得ることができます。 – shmosel
はい、私が間違っていなければ、Javaのソート方法はそれをO(n log(n))にします。 – bryancresswell
@shmoselああ、Math.minとMath.maxはい? – bryancresswell
によってこれらの値を得ることができます。 2つの短いループを作成します.1つは最大1つの配列を取得し、もう1つは他の配列の最小値を取得してからこれらの値を比較します。同じ数の値が常に同じ場合、同じループ上で最大値と最小値の両方を取得することもできます。
すごい!ありがとう! – bryancresswell
各要素の配列を比較する必要がある場合、それらをループする必要がある場合は、両方の配列がソートされている場合にのみO(n)をとります。ただし、O(n^2)は必要ありません。
- 1. 配列のすべての値と等しくないintをチェックする方法はありますか? (C++)
- 2. ブール値の2つの配列を比較する最も効率的な方法は何ですか?
- 3. このように文字列を効率的に切り替える方法はありますか?より効率的なものはありますか?
- 4. Coqで2つの 'int'型を比較する方法はありますか?
- 5. 私は持っているこのコードを書くより効率的/エレガントな方法はありますか?
- 6. intを各数字のintの配列に変換する簡単な方法はありますか?
- 7. C#と私はしようとしてるかの簡単でより効率的な方法がある場合は、いくつかのアドバイスをした後
- 8. このクエリを書くためのより良い/より簡潔な方法がありますか?
- 9. エレガントかつ効率的な方法
- 10. フローティングアクションボタン:デフォルトのミニよりも小さいボタンを作るための簡単な方法はありますか?
- 11. 2つの配列のアイテムを比較/ソートする最も効率的な方法は何ですか?
- 12. 目的Cのintの配列をコピーする最も効率的な方法は何ですか?
- 13. C++で比較的小さな素数に1つのcharをハッシュする方法はありますか?
- 14. iPhone - 最も効率的な/より小さいコードを生成しますか?
- 15. セルフ結合の列がNULLでない場合、列自体と比較する方法はありますか?
- 16. 列を分割するためのより効率的な方法があり
- 17. ハッシュキー/値が存在する場合、与えられたキーの配列でハッシュ値を返すより効率的な方法はありますか?
- 18. より簡潔な方法で配列のインデックスを取得する方法はありますか?
- 19. 間隔を置いてリクエストを行うためのよりエレガントで効率的な方法は何ですか?
- 20. すべての列が等しい場合、データフレームから行を削除する方法はありますか?
- 21. キーボードからintを読み出すJavaプログラム(例外あり)は、より効率的な方法ですか?
- 22. intよりも値渡しの方が速いのはなぜですか?
- 23. int列のregex検索を効率的に行いますか?
- 24. 効率的な方法ですべての一致を見つけ、ある配列を別の配列と比較することはできません
- 25. 提供されたjsonObjectにキーがない場合、効率的にチェックする方法はありますか?
- 26. 2つのファイルを比較する簡単な方法はありますか?一致しない場合はエラーになりますか?
- 27. 2つの非常に大きな数値(長いものよりも大きいもの)を比較するのに最も効率的な実行方法
- 28. 比較的一般的なループを書くより簡潔な方法をお探しですか?
- 29. どちらが効率的ですか?繰り返されるセレクタやより簡潔なセレクタの変数
- 30. intが他のintより5小さいかどうかをチェックする方法?
「同じ古い方法で」、私はあなたが最大(O(n))と他の(O(n))の最小値を見つけてそれらの2つの値を比較することを意味すると思いますか? 2つの配列について何も分かっていない場合(ソートされていない場合)、そうでない場合は、それ以上に高速化することはできません。 2つのネストされたループを意味するなら、それは現在O(n)の時間に実行されていません。 – yshavit
短くて効率的なものは同じものではありません。 'Arrays.stream(arrayA).max()。getAsInt();'はあなたのところでは短いですが、それでも内部ではループ内のすべてのメンバを検査するために内部的に使用されます。それでも、私はストリーミングを使用します。しかし、一方の配列が他の配列よりも大きいかどうかを知りたければ、2回ストリーミングするのではなく、自分のループを作成します。 – FredK