Leetcode225。スタックは、キューを実装しました

タイトル説明

以下のスタックを使用してキューの実装:

  • プッシュ(X) - スタック元素X
  • ポップ() ​​- トップ要素を削除します
  • トップは() - トップ要素を取得します。
  • 空() - スタックが空であるかどうかを返します

説明:

  • サイズ、正面からポップ/ PEEK、バックにプッシュされ、これらの操作の空で法的です - あなただけのキューの基本的な操作を使用することができます。
  • 使用している言語は、キューをサポートしていないかもしれません。あなたは長い間、標準の操作などとしてキュー、キューをシミュレートするために、リストまたは両端キュー(両端キュー)を使用することができます。
  • あなたはすべての操作は、(例えば、空のスタックにポップ操作やトップを呼び出すことはありません)有効であることを仮定してもよいです。

問題の解決策

アナログとLINKLIST共通機能(ジャワ)

アイデア:

主キーは、キューとスタックの特徴によればLinkedListの一般的に使用される機能を習得することで、機能のその組み合わせ。
クラスLinkedListのポータル

主に細部に反映されpush()ますが、スタックに値を入力するときにプッシュする必要があるとき、:

  1. LINKLISTは尾に価値を置きます
  2. ヘッドノード(オフqueue.remove()尾上)
  3. サイクルの第2ステップ(队列长度-1)時間
  4. ノードを行った後、新たに追加されたノードの先頭になります。

これは、毎回新たな要素がリオーダスタックするために添加されるように行われます。上部後ポップ有するpoll()peek()頭部またはビューへの出力ノード。

class MyStack {
    Queue<Integer> queue;
    
    
    public MyStack() {
        queue = new LinkedList<>();
    }
    
    
    public void push(int x) {
        queue.add(x);
        for(int i = 1; i < queue.size(); i++)
            queue.add(queue.remove());
    }
    
    
    public int pop() {
        return queue.poll();
    }
    
    
    public int top() {
        return queue.peek();
    }
    
    
    public boolean empty() {
        return queue.size() == 0;
    }
}
公開された43元の記事 ウォン称賛20 ビュー1454

おすすめ

転載: blog.csdn.net/Chen_2018k/article/details/104603419