1. 程式人生 > 其它 >CMake 編譯 Log4cplus

CMake 編譯 Log4cplus

很有意義的一個題目。其實本質是在一個類中維護了兩個棧,其中一個是正常的,另外一個維護的是最小元素,與其說維護的是最小元素,不如說維護的是該元素對應的元素被壓入棧中時,該最小棧中的最小元素。其巧妙之處在於,若彈出的元素非最小元素,則最小棧中彈出的元素也不是唯一的,下面肯定還有。而若彈出的元素為當前最小值,則該最小值在最小棧中也會被彈出,剩下的則是之前壓棧這個動作完成後的最小值。很巧妙,值得紀念

 1 class MinStack {
 2     stack<int> x_stack;
 3     stack<int> min_stack;
 4 public:
 5
MinStack() { 6 min_stack.push(INT_MAX); 7 } 8 9 void push(int x) { 10 x_stack.push(x); 11 min_stack.push(min(min_stack.top(), x)); 12 } 13 14 void pop() { 15 x_stack.pop(); 16 min_stack.pop(); 17 } 18 19 int top() {
20 return x_stack.top(); 21 } 22 23 int getMin() { 24 return min_stack.top(); 25 } 26 };