这道题如果我们只是排完升序之后输出第二个数,那么就会WA:
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
int main( )
{
int n;cin>>n;
for(int i=0;i<n;i++)cin>>a[i];
sort(a,a+n);
cout<<a[1];
return 0;
}
因为有这样的数据:
1 3 2 5 1
这样排完之后就是:
1 1 2 3 5
此时正确的应该输出2,但是按照上面的代码会输出1.
正确的代码:
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
int main( )
{
int n;cin>>n;
for(int i=0;i<n;i++)cin>>a[i];
sort(a,a+n);
for(int i=1;i<n;i++)
{
if(a[i]!=a[i-1])
{
cout<<a[i];
break;
}
}
return 0;
}