1、利用棧中o(1)的時間複雜度取最大值的思路,使用兩個棧構建乙個佇列;
2、然後取出兩個棧中的較大者即為佇列的最大值。
#include
#include
#include
using
namespace
std;
class satckmax
else
}void pop()
datastack.pop();
maxstack.pop();
}int top()
else
}int max()
else
}bool empty()
protected:
private:
stack
datastack;
stack
maxstack;
};class queuemax
void pop()
}if (sb.empty())
sb.pop();
}int max()
if (sb.empty())
return (sa.max()>sa.max()? sa.max():sb.max());
}protected:
private:
satckmax sa;
satckmax sb;
};void test()
結果
2 2
3 3
3 3
0
程式設計之美 佇列中取最大值操作問題
思想就是入隊操作時,對最大值進行記錄。一種方法直接建立佇列,二種方法是利用2個棧實現佇列功能 詳見前面的文章 此處給出第一種方法 maxqueue.cpp 定義控制台應用程式的入口點。include stdafx.h includetypedef int type using namespace s...
程式設計之美 3 7 佇列中取最大值操作問題
1.簡述 假設有這樣乙個擁有3個操作的佇列 1.enqueue v 將v加入佇列中 2.dequeue 使佇列中的對首元素刪除並返回此元素 3.maxelement 返回佇列中的最大元素 請設計乙個資料結構和演算法,讓maxelement操作的時間複雜度盡可能的低。2.思路 起初沒仔細看,還以為與此...
佇列的最大值
題目 給定乙個陣列和滑動視窗的大小,請找出所有滑動視窗裡的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個 滑動視窗,它們的最大值分別為,include include include using namespace std templateclass queuewithmax voi...