繁体   English   中英

相同的表达但不同的结果

[英]The same expression but different result

所以我在leetcode中做了一个问题。 它是使用队列实现堆栈。 如果我在下面提交此代码。 它被接受了。

class Stack {
    public:
    queue<int> que;
    // Push element x onto stack.
    void push(int x) {
        que.push(x);
        for(int i=0;i<que.size()-1;i++){
            que.push(que.front());
            que.pop();
        }
    }

    // Removes the element on top of the stack.
    void pop() {
        que.pop();
    }

    // Get the top element.
    int top() {
        return que.front();
    }

    // Return whether the stack is empty.
    bool empty() {
        return que.empty();
    }
};

但如果我只改变for(int i=0;i<que.size()-1;++i) for(int i=0;i<=que.size()-2;i++) ,我得到了超出时间限制。 最后执行的输入:push(1),empty()。有人可以告诉我为什么??? 谢谢

queue::size()返回一个size_t,它基本上是一个无符号数。 负无符号数转换为大数。

所以queue::size()-1 - >庞大的数字(0xFFFFFFFF)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM