一个bug(未解决)&&
class MaxQueue {
public:
deque<int>d;
queue<int>q;
MaxQueue() {
}
int max_value() {
if(d.empty())//为空
{
return -1;
}
return d.front();
}
void push_back(int value) {
//弹出deque中比value小的值
q.push(value);
if(d.empty())
{
d.push_back(value);
}
else
{
while(!d.empty())
{
if(d.back()<value)
{
d.pop_back();
}
}
d.push_back(value);
}
}
int pop_front() {
if(d.empty())return -1;
int ret=q.front();
if(ret==d.front())d.pop_front();
q.pop();
return ret;
}
};
在这个里面啊,在LeetCode上面编译超时,其中有一段很奇怪
将:
while(!d.empty())
{
if(d.back()<value)
{
d.pop_back();
}
}
改为
while(!d.empty()&&d.back<value)
d.pop_back();
则运行成功。乖得很。