デイリーアルゴリズム: 2 つのスタックを持つキューの実装

デイリーアルゴリズム: 2 つのスタックを持つキューの実装

[[422522]]

この記事はWeChatの公開アカウント「3分でフロントエンドを学ぶ」から転載したもので、著者はsisterAnです。この記事を転載する場合は、「3分で学ぶフロントエンド」公式アカウントまでご連絡ください。

2 つのスタックを使用してキューを実装します。キューは次のように宣言されています。キューの末尾に整数を挿入し、キューの先頭から整数を削除するには、それぞれ appendTail と deleteHead という 2 つの関数を実装してください。 (キューに要素がない場合、deleteHead 操作は -1 を返します)

例1:

  1. 入力:
  2. [ "CQueue" "appendTail" "deleteHead" "deleteHead" ]
  3. [[],[3],[],[]]
  4. 出力: [ null , null ,3,-1]

例2:

  1. 入力:
  2. [ "CQueue" "deleteHead" "appendTail" "appendTail" "deleteHead" "deleteHead" ]
  3. [[],[],[5],[2],[],[]]
  4. 出力: [ null ,-1, null , null ,5,2]

ヒント:

  • 1 <= 値 <= 10000
  • 最大で、appendTail と deleteHead は 10,000 回呼び出されます。

解決:

  • スタックはLIFO、キューはFIFO
  • ダブルスタックはシーケンスの反転を実現できます。stack1=[1, 2, 3]、stack2=[] があるとします。ループがスタック1をポップし、ポップされた要素をスタック2にプッシュすると、ループの終了後、stack1=[]、stack2=[3, 2, 1] になります。つまり、stack1 の要素の反転は、stack2 を通じて実現されます。
  • キューの最初の要素を削除する必要がある場合は、stack2 をポップするだけで済みます。stack2 が空の場合は、stack1 の要素を stack2 に反転してから、stack2 をポップする必要があります。stack1 も空の場合、つまりキューに要素がない場合は、-1 を返します。

コード実装:

  1. 定数CQueue =関数() {
  2. this.stack1 = []
  3. this.stack2 = []
  4. };
  5. CQueue.prototype.appendTail =関数(値) {
  6. this.stack1.push(値)
  7. };
  8. CQueue.prototype.deleteHead =関数() {
  9. if(this.stack2.length) {
  10. this.stack2.pop()を返す
  11. }
  12. if (!this.stack1.length) は-1を返します
  13. while(this.stack1.length) {
  14. this.stack2.push(this.stack1.pop())
  15. }
  16. this.stack2.pop()を返す
  17. };

複雑性分析:

時間計算量: appendTailの時間計算量はO(1)、deleteHeadの時間計算量はO(n)です。

空間計算量: O(n)

<<:  Facebook、黒人男性を霊長類と認識したアルゴリズムについて謝罪

>>:  5Gの商用化は加速し続け、自動運転との統合における価値が強調される

推薦する

生成AIにおける新たな高収入の仕事

クラウドプロバイダーのサービスの需要は2024年まで増加すると予測しています。また、 AI生成技術と...

約 200 以上の自動運転データセットの包括的な調査!データクローズドループプロセス全体の概要

序文と個人的な理解自動運転技術は、最新のハードウェアとディープラーニング手法の進歩により急速に発展し...

Google の自動運転車は「先​​天的な欠陥」があるが、その商品化は「中止」の運命を免れるだろうか?

[[248486]]グーグルの自動運転車開発会社ウェイモはすでに試験的な移動サービスの一部を有料化...

Apple Watchも新型コロナウイルスを検知可能:症状が出る7日前に検知可能

現在、新型コロナウイルスの核酸検査のほとんどは、咽頭ぬぐい液を使って行われている。スマートウォッチを...

NatureがAIGC禁止令を発令!ビジュアルコンテンツにAIを使用した投稿は受け付けられません

最も権威のある科学雑誌の一つであるネイチャー誌は最近、明確な声明を発表しました。 生成型人工知能 (...

Excelを使用してPIDアルゴリズムを学習する

1. PIDの紹介モーター制御この方法ではフィードバックはありません。つまり、入力数値を完全に信じて...

映画業界におけるAI:将来はアカデミー賞の背後にAIが立つ

[[258542]]最近終了した2019年のアカデミー賞授賞式では、最優秀脚本賞や最優秀視覚効果賞を...

人工知能の新たな用途:死者の蘇生

映画では必ず蘇生のシーンが出てきますが、現実の世界でも人間を冷凍保存するプロジェクトがあります。その...

...

人工知能の大学が雨後の筍のように次々と誕生しています。そこでは何を教えるのでしょうか?どのように教えるか?

[[240090]] 2018年グローバル人工知能製品アプリケーション博覧会で、来場者がテーマポス...

...

AIを活用してパイロットプロジェクトを計画する方法

人工知能 (AI) は、あらゆる業界の企業にビジネス運営の成長と改善の機会を提供します。 Fortu...

びっくり! 7万時間の訓練を経て、OpenAIのモデルは「Minecraft」で木材の設計を学習した。

最近、GPTを忘れてしまったかのようなOpenAIが新たなアイデアを思いつきました。大量のラベルなし...