别看这道题水了吧唧, 但作者只给了600ms的运行时间,
第一重循环肯定是N--,
但找最小值的操作,用输入一次判断一次的方法行不通, 因为他会有弹出的操作,当保存最小值时,如果弹出的是该值, 那么我们找不到第二小的。
因此就只能遍历,但这样时间复杂度就变成了n²,一定运行超时。我真的想不到更简化的方法了,各清位大佬们支支招。谢谢!
非满分代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std ;
int main()
{
ios::sync_with_stdio(false);
int n, x;
cin >> n;
string a;
vector<int>v;
bool flag = false;
while(n--) {
cin >> a;
if(a[1] == 'u') { cin >> x; v.push_back(x); }
else if(a[1] == 'o') v.pop_back();
else {
int minValue = *min_element(v.begin(),v.end()); //最小范围的定义数。
cout << minValue << endl;
}
}
return 0;
}
###运行结果: