JavaScript - プログラミング、アルゴリズムの問​​題
PHP中文网
PHP中文网 2017-06-12 09:25:56
0
4
931

一昨日面接で質問がありました
js、python、java、c、cなどの言語を使用して100億のデータを10秒で計算し、それを完了してください(わずか3秒以内)、偶数 奇数の前
形式は次のとおりです
1, 2, 3, 4, 5
出力結果は
2, 1, 4, 3, 6, 5,
質問 2: 1 上のコードでは、for while キーワードを使用せず、100 億個の素数をすべて取得する必要があります (時間は 3 秒を超えることはできません)
これを行うにはどうすればよいですか?

PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(4)
我想大声告诉你

最初の質問がわかりません。これは、2 つの数字がペアであり、偶数が奇数の前に来るという意味ですか?

2 番目の質問は簡単です。ループを使用できない場合は、配列の反復を使用します。

いいねを押す +0
代言

そういえばphpforeachは関係ないですね(笑

面接官の意図は、再帰関数を書くように求めることだと思いますか?まあ、そうだと思います。

いいねを押す +0
Ty80

一昨日面接で質問がありました
js、python、java、c、c++などの言語を使用して、100億のデータを10秒で計算して完了してください(3秒以内のみ)、偶数が来ます奇数の前
形式は次のとおりです
1、2、3、4、5
出力結果は
2、1、4、3、6、5、
質問2: 1のコードの上に、 100 億からすべての素数を取得する (時間は 3 秒を超えることはできません)
これを行うにはどうすればよいですか?


しばらく使えなくなるので

それでは、再帰的なパフォーマンスが十分ではありません。 。 。しかし、私はまだいくつかを使用しています。 。 For Performance

賢い方法があるかも知れません

。 。 。 100亿 サイズはあるはずです。 まだ見つかりません。

コード

100億はちょっと大きいので、まずは10万でいきます

リーリー

このようにして、長さ 100,000 の自然数の配列を取得できます。


次へ

  1. 偶数が最初、奇数が最後

観察した結果、奇数 + 1偶数 - 1は大丈夫であることがわかりました

リーリー

最初の質問に答えてください

スクリーンショット 1

次へ

次の問題は、上記に基づいて素数を取得することです。つまり、zs からすべての素数を取得します。

素数の問題を調べたら、他の人が言いました

それから、6の倍数のそれぞれの左辺と右辺をたどって、それらが素数であるかどうかを判断するだけです。 质数分布在 6 的倍数的左边或者右边

リンク: 素数/素数かどうかの判定 - 通常の判定アルゴリズムから効率的な判定アルゴリズムの考え方まで

リーリー

スクリーンショット 2

正しいかどうかは分かりません...

しかし、

の素数 1 2 3 5 を個別に戻す必要があります。 (ここにはスペルはありません)小于 6

パフォーマンス

上に書いたコードを貼り付けてください

リーリー

テスト

リーリー

結果は写真の通りです1000 万


13.8 秒かかりました。10 + 3 秒で

のボリュームを完了することは不可能です。 13.8 秒 不可能做到 10 + 3 秒内完成 100亿

私のコンピューターは

i5-4210M 12G Chrome 58

JavaScript はこのパフォーマンスを達成できません:

13 秒で数値.... JavaScript 做不到这样的性能: 100亿 个数字 13

いくつかの

データ... G

上記の考えによれば、

でも100億を13秒で実行するのは難しいと推定されます。 C/C++

問題を解決することに集中してください。

リンク

数値が素数/素数かどうかを判定する - 通常の判定アルゴリズムから効率的な判定アルゴリズムのアイデアまで

いいねを押す +0
Ty80

まず第一に、上の階の素数を見つけるためのアルゴリズムに感謝します。結果とコードを投稿します(直接爆発したのは 1,000 万、1 億のブラウザのみで、再帰は素数を見つけるのに使用できませんでした(私のテストの結果)。それ以外の場合は、Exploded する必要があり、反復することしかできません)。

ブラウザでの結果:

ノードの結果:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート