スタック(高パフォーマンス)の最初の5つの項目を取得しますは、どのように私は最近、このインタビューの質問をした
どのようにスタック内の最初の5つの項目を取得するには?
スタックあなたが知っているようには
インタビュアーはわずか2操作とスタックのための高性能なアルゴリズム/擬似コードを求め、ポップ()とプッシュインファーストアウトラストです()。
私の些細な答えは:
Stack S2;
foreach (item in stack S1)
{
object item = S1.Pop();
S2.push(item)
}
for (int i=0 ; i<5 ; i++)
Printf(S2.Pop());
彼は、我々はより高い性能を持つ別の解決策を持っていますが、私は1つを見つけることができないことを教えてくれました。
ここに欠けているものがあります。スタックは 'empty()'もサポートしていますか?アルゴリズムは 'O(n)'にあり、リスト/スタック中の最も遠い要素にアクセスするのと同じくらい良いものです。私はインタビュアーがあなたのソリューションが漸近的に最適であることを彼に伝えたいと願っており、その理由を伝えたいと賭けていました。 – thiton
@HotLicks StackはLIFOで最後に最初に出ますので、スタックの一番下にある最初の5つのアイテムを取得します –
質問はあまりにも漠然としています:「最初」は「上」か「下」を意味しますか?値は何が行われますか?スタックの状態は完了すると何になる必要がありますか? –