1.最小栈的双栈实现方法
一个栈用于存储数据,另一个存储当前的最小值,两个栈同步操作即可
class MinStack {
public:
/** initialize your data structure here. */
MinStack() {
}
void push(int x) {
stack_data.push(x);
if(stack_min.empty())
stack_min.push(x);
else
{
if(stack_min.top()<x)
stack_min.push(stack_min.top());
else
stack_min.push(x);
}
}
void pop() {
stack_data.pop();
stack_min.pop();
}
int top() {
return stack_data.top();
}
int getMin() {
return stack_min.top();
}
private:
stack<int> stack_data;
stack<int> stack_min;
};
2.打乱数组的随机方法
for(int i=0;i<nums.size();++i)
{
int random_i=rand()%nums.size();
swap(nums[i],nums[random_i]);
}