2017-11-22 14 views
-4

インタビュー中にこの問題が発生しました。この問題の最適な解決策は何でしょうか?番号付きメッセージがサーバーに到着しました

メッセージオブジェクトが送信され、サーバーに到着します。メッセージは[0、n]から番号が付けられます。メッセージはランダムに到着します。

[0から渡された番号への]すべてのメッセージがサーバーに到着した場合に、番号を取り、[0、渡された番号に]からリストを返します。 [0から渡された番号への]すべてのメッセージが到着していない場合は、nullを返します。

+1

は、あなたがそれをやってみましたがありますか?もしそうなら、何が効いていないのですか?あなたは、あなたのインタビューの質問に答えるだけで、あなたのインタビューの仕事をしてくれる人がいるとは期待できません。 – DGarvanski

+0

私はそれをやろうとしました。インターバルツリーを使用してlog(n)時間の挿入と取得を行うことができました。これは以前のインタビューの質問であり、進行中の仕事ではありません。 – john

答えて

0

タグ付けされた番号に基づいてメッセージを並べ替え、リストの長さを取る。長さが指定された数と等しい場合、すべてのメッセージが到着しています。私はメッセージの配列を持っている場合、例えば

、:

int[] messages = [0, 3, 2, 1, 8, 6, 5]; 

public void confirmArrival(int[] list, int number) 
{ 
    // Implement the sort algorithm for list 
    // ... 

    if (list.length() == number + 1) 
    { 
     return list; 
    } 

    return null; 
} 
+0

害はありませんが、このコードの書式は癌に似ています。このような質の低い回答のポイントさえも何ですか? –

+0

私の編集では、どのようにコードがプロプラエフォーマットされているかを知るための道具を持っています。 –