求n个整数中倒数第二小的数。
每一个整数都独立看成一个数,比如,有三个数分别是1,1,3,那么,第二小的数就是1。
Input
输入包含多组测试数据。
输入的第一行是一个整数C,表示有C测试数据;
每组测试数据的第一行是一个整数n,表示本组测试数据有n个整数(2<=n<=10),接着一行是 n个整数 (每个数均小于100);
Output
请为每组测试数据输出第二小的整数,每组输出占一行。
Sample Input
2 2 1 2 3 1 1 3
Sample Output
2 1
分析,就是一直保留2个位置给堆然后输出堆顶就欧克。
听懂了记得给个赞鼓励一下,码字不易,用爱发电。
上ac代码。
有事你就q我;QQ2917366383
学习算法
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<queue>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
priority_queue<int ,vector<int>,less<int> > q;//大根堆priority_queue<int,vector<int>,greater<int> >q;
int n,m,c=0;
cin>>n;
while(n--)
{
cin>>m;
q.push(m);
if(q.size()>2)
{
q.pop();
}
}
cout<<q.top()<<endl;
}
}