共通の差異を持つ配列内の正の整数シーケンス2 たとえば2 4 6 8 ここで、各数字をその正方形で置き換えます。計算を効率的に実行します。 私はこの質問をインタビューで尋ねられ、2の倍数の演算であるためビット演算子を使って彼にo(n)解を与えました。より良い方法があればお勧めします。シーケンス内の正方形の数字
答えて
いいですが再帰的です。 :-)
(n+2)(n+2) = n**2 + 4*n + 4 // and you got n**2
@Chrisが修正されました – Anycorn
@aaa:ごめんなさい、私のコメントを削除しました。ただ編集するつもりでした:) –
+1 - これは面接官が得ていたものだと思います。しかし、私は、これを利用するプログラムが単純な乗算を使うプログラムよりも高速になるとは思っていません。数値がプリミティブ型の整数型を使って表現されていると仮定します。 IMO、これはかなり不自由な質問です。「巧妙な」回答を提供する人を除外することが目的でない限り。 –
class Square
{
public static int[] sequence(int[] array)
{
int[] result=new int[array.length];
for(int i=0;i<array.length;i++)
{
result[i]=array[i]*array[i];
}
return result;
}
}
// test cases:
// Square.sequence(new int[]{2,4,6,8})
//out put->{ 4, 16, 36, 64 }
あなたのアプラックを詳しく説明してください。 –
本当にインタビュアーに依存していて、彼らが「正しいこと」と思っています。それが私だったら、(n < < 2)+ 4がきちんとしていたと思っていたのですが、反対に私は自分のコードでそれを見るのは嫌です。メンテナンスにはもっと多くの考えが必要です。良いオプティマイザがまったくいい仕事をする可能性もあります。
私は、「効率的な操作を実行する」というフレーズは、インタビュアーが速い計算を求めていた可能性が高いと考えています。それはまだO(n)ですが、2つのO(n)アルゴリズムを比較するとき、係数が再び重要になることを忘れないようにしてください。
- 1. 正方形内のポイントC++
- 2. 2つの数字の間の完全な正方形
- 3. 配列内の数字のシーケンスを見つける
- 4. CでFactorial While whileループ内の数字の正方形を見つける方法は?
- 5. 数字の中で最大の正方形を見つける方法(Java)
- 6. 正方形と十字の内外の(x、y)を求めるアルゴリズム
- 7. 三角形、正方形、円の下の整数点の数を見つける
- 8. c#正規表現文字列内の数字のみ
- 9. 正方形内の2つの三角形のクリック可能な領域
- 10. 数字のシーケンスの最後に繰り返しシーケンスを見つける
- 11. UIToolBarの正方形のカスタマイズ
- 12. Javaの正方形のルーツ
- 13. 内側の角が丸い正方形のレイアウト境界
- 14. 関数のシーケンスを線形に扱う(as3)
- 15. Rubyで英数字シーケンスを生成
- 16. シーケンスで始まらない文字列の正規表現
- 17. 行列内で最大の合計を持つ正方形
- 18. 正規表現:シーケンス
- 19. 正規表現:シーケンス
- 20. 1つの正方形の画像から長方形のuibutton
- 21. 文字列内の一般的なシーケンスを見つける
- 22. 正方形、通知
- 23. NTh正方形フリーセミプライム
- 24. 非正方形NSButton
- 25. perl:JSON文字列の不正な形式のUTF-8文字
- 26. 3Dのレイと正方形/長方形の交差
- 27. 奇数シーケンスのループ
- 28. シーケンスを非減少シーケンスを形成できる部分に分割するためのカットの最小数
- 29. データフレーム内の変数名のシーケンスの名前を変更
- 30. Python pandas count文字列内の正規表現の一致数
「各数字を四角で置き換えてください」という意味を明確にすることはできますか?配列のすべての要素を少なくとも1回訪問して更新する必要があるので、これはΩ(n)時間かかる必要があります。具体的に最適化しようとしているのは何ですか? – templatetypedef
@aboveええ私がやったのと同じアプローチ。私はちょうどビット賢明な演算子でそれをやっているよりも数字を正方形にする方法があることを知りたかった。 –
Ummmmm ...私はあなたのスクエアリングアルゴリズムを取得するか分からない。あなたはそれを説明しようと思いますか?具体的にどのようにビットごとの操作を使用する? –