lc155-Min Stack 發表於 2016-08-28 | 分類於 leetcode | 0 comments | 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970class MinStack {public: vector<int> a; int min; int len; bool flag; int min_index; /** initialize your data structure here. */ MinStack() { len = 0; min = -1; flag = false; } void push(int x) { a.push_back(x); len++; if(!flag) { min = x; flag = true; } else { if (x < min) { min = x; min_index = len-1; } } } void pop() { a.pop_back(); if(min_index == len - 1) get_min(); len--; if(len == 0) flag = false; } int top() { return a[a.size()-1]; } int getMin() { if(flag == false) { get_min(); } return min; } void get_min() { min = a[0]; for(int i = 0; i < a.size(); i++) { if(a[i] < min) { min = a[i]; min_index = i; } } }};/** * Your MinStack object will be instantiated and called as such: * MinStack obj = new MinStack(); * obj.push(x); * obj.pop(); * int param_3 = obj.top(); * int param_4 = obj.getMin(); */