LeetCode-2つのスタックを使用してキューを実装します(JS実装)

タイトル説明

問題解決のアイデア

  • 2つのアレイを使用して初期化します
  • エンキュー操作を格納する配列
  • デキュー操作を格納する配列
  • エンキュー関数は、システムによって入力された値をA配列にプッシュします
  • デキュー関数は、最初にデキュー配列に要素があるかどうかを判断し、要素がある場合はそれをポップアウトします
  • そうでない場合は、A配列の要素を逆の順序でB配列にプッシュしてから、ポップアウトします。

実装コード

var CQueue = function() {
    
    
    // 模拟入队
    this.stackA = [];
    // 模拟出队
    this.stackB = [];
};

CQueue.prototype.appendTail = function(value) {
    
    
    console.log("系统输入的数据:",value);
    this.stackA.push(value);
};

CQueue.prototype.deleteHead = function() {
    
    
    // 首先判断出队栈中是否有元素,有则出栈
    if (this.stackB.length) {
    
    
        return this.stackB.pop();
    } else {
    
    
        // 如果出队栈中没有元素,则判断入队栈中是否有元素
        while (this.stackA.length) {
    
    
            // 如果入队栈中有元素,则将入队栈倒序加入到出队栈
            this.stackB.push(this.stackA.pop());
        }
        if (this.stackB.length === 0) {
    
    
            return -1;
        } else {
    
    
            return this.stackB.pop();
        }
    }

};

おすすめ

転載: blog.csdn.net/sinat_41696687/article/details/115196397