一昨日面接で質問がありました
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 秒を超えることはできません)
これを行うにはどうすればよいですか?
我想大声告诉你2017-06-12 09:27:56
最初の質問がわかりません。これは、2 つの数字がペアであり、偶数が奇数の前に来るという意味ですか?
2 番目の質問は簡単です。ループを使用できない場合は、配列の反復を使用します。
PHP中文网2017-06-12 09:27:56
一昨日面接で質問がありました
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
は大丈夫であることがわかりました
最初の質問に答えてください
次の問題は、上記に基づいて素数を取得することです。つまり、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++
リンク
PHP中文网2017-06-12 09:27:56
まず第一に、上の階の素数を見つけるためのアルゴリズムに感謝します。結果とコードを投稿します(直接爆発したのは 1,000 万、1 億のブラウザのみで、再帰は素数を見つけるのに使用できませんでした(私のテストの結果)。それ以外の場合は、Exploded する必要があり、反復することしかできません)。
ブラウザでの結果:
ノードの結果: