题目描述:
度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少?
输入描述: 首先输入一个正整数N(N <= 50),接下来输入N个数表示每顶帽子的价格(价格均是正整数,且小于等于1000)
输出描述: 如果存在第三便宜的帽子,请输出这个价格是多少,否则输出-1
输入例子: 10 (个数)
10 10 10 10 20 20 30 30 40 40
输出例子: 30
#include<iostream>
#include <algorithm>
#include<vector>
using namespace std;
void find_thirdpoor(int *arr,int len){
vector<int> res;
int i=0;
for(;i<len;i++){
res.push_back(arr[i]);
}
sort(res.begin(),res.end());
int equalnum=0;
int tempdata=res[0];
i=0;
for(;i<res.size();i++){
if(res[i]!=tempdata)
{
tempdata=res[i];
equalnum++;
if(equalnum==2){
cout<<tempdata<<endl;
break;
}
}
}
if(equalnum!=2){
cout<<-1<<endl;
}
}
int main(){
int arr[]={10,10,10,10,20,20,15,30,30,40,40};
int n=sizeof(arr)/sizeof(arr[0]);
find_thirdpoor(arr,n);
system("pause");
return 0;
}
测试输出结果:
测试用例:1. int arr1[]={10,10,10,10,20,20,30,30,40,40};
2.int arr2[]={10,10};
3.nt arr3[]={10,10,10,10};
void test(){
int arr1[]={10,10,10,10,20,20,30,30,40,40};
int n1=sizeof(arr1)/sizeof(arr1[0]);
find_thirdpoor(arr1,n1);
int arr2[]={10,10};
int n2=sizeof(arr2)/sizeof(arr2[0]);
find_thirdpoor(arr2,n2);
int arr3[]={10,10,10,10};
int n3=sizeof(arr3)/sizeof(arr3[0]);
find_thirdpoor(arr3,n3);
system("pause");
}
输出结果: