道路標識232号


私の答え

MyQueue.prototype.push = function(x) {
    this.s1.push(x);
};

/**
 * @return {number}
 */
MyQueue.prototype.pop = function() {
    let result;
    let len = this.s1.length-1;
    for (i = 0; i < len; i++) {
        this.s2.push(this.s1.pop());
    }
    result = this.s1.pop();
    let len2 = this.s2.length
    for (i = 0; i < len2; i++) {
        this.s1.push(this.s2.pop());
    }
    return result;
};

/**
 * @return {number}
 */
MyQueue.prototype.peek = function() {
    return this.s1[0];
};

/**
 * @return {boolean}
 */
MyQueue.prototype.empty = function() {
    return (this.s1.length === 0);
};
スタック1とスタック2を宣言し、push時にスタック1に直接pushし、pop時にスタック1[0]以外のすべての要素をポップアップし、すぐにスタック2に保存します.これにより、スタック2には、スタック1[0]以外の要素が逆順序で格納される.その後、スタック1[0]もpopされて単独で保存され、再びpopスタック2の要素がスタック1に挿入される.
実行速度が速く、メモリの使用量が少ない.

他人の解答


他の人の解答は私がスタックを押すときにやったように、保存順の逆順に並べられます.これは同じアルゴリズムをpushに実装するかpopに実装するかの違いのようだ.