class MinStack {
public:
pair<int, int>* ptr;
pair<int, int> value;//first:本身值 second:它放入栈中时,此时的最小值
int size;
int capacity;
int minVal;
MinStack() {
ptr = nullptr;
size = 0;
capacity = 0;
minVal = INT_MAX;
}
void push(int val) {
if(capacity == size){
pair<int, int>* temp = (pair<int, int>*)realloc(ptr, (size + 1) * sizeof(pair<int, int>));
ptr = temp;
capacity++;
}
size++;
ptr[size - 1].first = val;
ptr[size - 1].second = minVal;
minVal = min(val, minVal);
}
void pop() {
//若当前出栈的是最小值,那么需要更新最小值;
if(ptr[size - 1].first == minVal){
minVal = ptr[size - 1].second;
}
size--;
}
int top(){
return ptr[size - 1].first;
}
int getMin() {
return minVal;
}
};
/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(val);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getMin();
*/
LeetCode Hot100 155.最小栈
最新推荐文章于 2024-10-05 12:29:44 发布