排序题
实现如下函数:int GetNthCount(const int *a , int len , int n)
其中,a为无序的int数组,len为a的长度,1<= n <len。
返回第n大的值在数组中出现的次数。
举例:假设a为{5,7,9,0,2,7},len=6,n=2,第n大的值是7,在数组中出现的次数是2,结果返回2。
我的代码
#include<iostream> #include<set> #include<map> using namespace std; int GetNthCount(const int *a , int len ,int n){ map < int ,int> mp; for(int i =0; i < len ;i++){ map<int , int>::iterator it = mp.find(a[i]); if(it != mp.end()){ it->second++; } else{ mp[a[i]] = 1; } } map<int , int>::iterator it1 = mp.end(); for(int i = 0; i < n;i++){ it1--; } return it1->second; } int main(){ int a[] = {5,7,9,0,2,7,7}; cout<<GetNthCount(a, 7 ,2)<<endl; }