デイリーアルゴリズム: 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の商用化は加速し続け、自動運転との統合における価値が強調される

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

RealAIは、業界の信頼できる発展を促進するために人工知能セキュリティ技術ツールを作成します。

4月26日、中国サイバースペース管理局の主催で「人工知能-社会実験の観点から見た社会ガバナンス」を...

...

国連は2030年の持続可能な開発目標の達成を支援するために数十台のロボットを採用する予定

ロイター通信によると、7月5日、国連技術機関はスイスで行われた「人類の利益のためのAI」イベントで、...

多くの国で人工知能産業が発展を加速している(国際的視点)

[[358162]]コアリーディング人工知能は、世界的な科学技術革命と産業変革の新たな流れを導く重...

AI、機械学習、ディープラーニングの解放

【51CTO.com クイック翻訳】 [[393512]] AI、機械学習、ディープラーニングの発展...

...

冬季オリンピックのテストマッチ、副審はAIだったことが判明

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

デジタルヘルスと医療AIベンチャーキャピタル投資は2021年第1四半期に42億ドルに達した

CB Insightsのデータによると、遠隔医療は2021年第1四半期に139件の取引で過去最高の4...

ロボット介護は人間に比べて高齢者にとって負担が少ない?

最近、浙江省金華市のある家族の監視ビデオがインターネット上で話題になった。動画の全長は3分15秒。こ...

...

IoT、エッジコンピューティング、AIプロジェクトが企業にもたらす利益

[[385209]]ビル・ホームズは、象徴的なフェンダー・ストラトキャスターとテレキャスターのギター...

大規模言語モデルの最大のボトルネックを突破する方法

翻訳者 |ブガッティレビュー | Chonglou OpenAIのGPT-4やAnthropicのC...

MD5アルゴリズムの暗号化プロセス

MD5とは何か MD5 はアルゴリズムです。MD5 の MD はMessage Digest の略で...

機械学習の課題:ブラックボックスモデルはこれら3つの問題に直面している

[[441689]] 01 機械学習の課題2016年3月、ディープラーニングアルゴリズムに基づくAl...

FlashAttention v2 は標準の Attention より 5 ~ 9 倍高速です。大規模なモデルで使用されます。

最近、GPT-4(コンテキスト長32k)、MosaicMLのMPT(コンテキスト長65k)、Anth...