6 questions. Covers Min stack and max stack.
Questions 1 to 5 of 6
minimum()
cpp #include <algorithm> #include <iostream> #include <vector> class MinStack { public: void push(int value) { values_.push_back(value); mins_.push_back(mins_.empty() ? value : std::min(value, mins_.back())); } void pop() { values_.pop_back(); mins_.pop_back(); } int minimum() const { return mins_.back(); } bool empty() const { return values_.empty(); } private: std::vector<int> values_; std::vector<int> mins_; }; int main() { MinStack s; for (int x : {4, 1, 4}) { s.push(x); std::cout << s.minimum() << ' '; } s.pop(); std::cout << s.minimum() << ' '; s.pop(); std::cout << s.minimum() << '\n'; }
cpp #include <cstddef> #include <iostream> #include <vector> class CompactMinStack { public: void push(int value) { values_.push_back(value); if (mins_.empty() || value <= mins_.back()) { mins_.push_back(value); } } void pop() { if (values_.back() == mins_.back()) { mins_.pop_back(); } values_.pop_back(); } int minimum() const { return mins_.back(); } std::size_t value_count() const { return values_.size(); } std::size_t min_count() const { return mins_.size(); } private: std::vector<int> values_; std::vector<int> mins_; }; int main() { CompactMinStack c; for (int x : {5, 2, 2, 6}) { c.push(x); } c.pop(); c.pop(); std::cout << "values " << c.value_count() << ", min entries " << c.min_count() << ", min " << c.minimum() << '\n'; }
mins_
top()
5 question(s) left on this page.