本节中的 反转 可以使用 reverse 方法吗?

来源:2-8 用两个栈实现一个队列

Liiiu

2022-02-24

如题,以下代码如果使用 reverse 岂不是只用一个数组就能实现吗?顺便问下 如果使用 reverse 的话,delete 的时间复杂度也是 O(n) 吧

export class MyQueue {
    private stack: number[] = []

    /**
     * 入队
     * @param n number
     */
    add(n: number) {
        this.stack.push(n)
    }

    /**
     * 出队
     */
    delete(): number | null {
        let res
        let stack = this.stack

        stack.reverse()
        res = stack.pop()
        stack.reverse()

        return res || null
    }

    // 函数前加 get , 就可以使用属性形式调用 ( .length )
    get length(): number {
        return this.stack.length
    }
}

// 功能测试
// const q = new MyQueue()
// q.add(100)
// q.add(200)
// q.add(300)
// console.log(q.length)
// console.log(q.delete())
// console.log(q.length)
写回答

1回答

双越

2022-02-25

可以用 reverse 来翻转。翻转之后 add 和 delete 操作就互换了。

0
1
入门级全栈专家
reverse本身就是On的复杂度吧
2022-03-08
共1条回复

2周刷完100道前端优质面试真题 双越最新力作

『前端面试真题100道』视频详解

1515 学习 · 642 问题

查看课程