Skip to content

Instantly share code, notes, and snippets.

@takei-yuya
Created April 28, 2020 08:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takei-yuya/cdd37d21bd92d49058ea8798d4c97b22 to your computer and use it in GitHub Desktop.
Save takei-yuya/cdd37d21bd92d49058ea8798d4c97b22 to your computer and use it in GitHub Desktop.
template <typename T>
class MinQueue {
public:
void Push(const T& value) {
queue_.push(value);
while (min_queue_.size() > 0 && min_queue_.back() > value) min_queue_.pop_back();
min_queue_.push_back(value);
}
void Pop() {
if (queue_.front() == min_queue_.front()) min_queue_.pop_front();
queue_.pop();
}
const T& Front() const { return queue_.front(); }
const T& Min() const { return min_queue_.front(); }
private:
std::queue<T> queue_;
std::deque<T> min_queue_;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment