(js実装)剣指offer--2つのスタックでキューを実装


2つのスタックでキューを実装


2つのスタックで1つのキューを実現し、キューのPushとPop操作を完了します.キュー内の要素はintタイプです

ぶんせき

  • スタックに入る操作は、要素pushをスタック1
  • に入れる.
  • 出桟分の3つのケース
  • スタック1スタック2が空であれば、キューに何もないことを示します.nullに直接戻ればいい
  • スタック2が空の場合、スタック1は空ではありません.では、スタック1のすべての要素をpopし、pushをスタック2に入れます.スタック2のスタックトップ要素popをスタックから出す(この場合、スタック2のスタックトップ要素は実際には最も早くpushがキューに入った要素であり、理解しなければ図を描くことができる).そのため、キューが先に出る効果を実現しました.
  • スタック2が空でない場合(実際にはスタック1の要素はすべてpopが出てスタック2に入った)、この場合スタック2のスタックトップ要素は依然として最も先進的なものであるため、直接popすれば
  • である.
    var stack1 = [];// 1
    var stack2 = [];// 2
    
    function push(node)
    {
       // write code here
       stack1.push(node);
    
    }
    function pop()
    {
       // write code here
       if((stack1.length == 0) && (stack2.length == 0)){//    ,  null
           return null;
       }
       if(stack2.length == 0){// 2    , 1    2, pop 2
           while(stack1.length != 0){
           stack2.push(stack1.pop());
           }
           return stack2.pop();
       }
       else{// 2   ,  pop 2 
           return stack2.pop();
       }
      
    }