模拟题:
#include<bits/stdc++.h>
using namespace std;
void printVec1(vector<int>& v);
void printVec2(vector<vector<int>>& v);
class Solution {
struct Node{
int id;
int score[5];
int cnt;
};
static bool cmp(const Node& a,const Node& b){
return a.id < b.id;
};
public:
vector<vector<int>> highFive(vector<vector<int>>& items) {
Node num[1005];
int cnt = 1;
map<int,int> m;
for(int i=0;i<items.size();i++){
int a = items[i][0];
int b = items[i][1];
if(m[a] == 0){
m[a] = cnt;
num[cnt].id = a;
num[cnt].score[0] = b;
num[cnt].cnt = 1;
cnt ++ ;
}else{
int c = m[a];
if(num[c].cnt == 5){
if(num[c].score[0] < b){
num[c].score[0] = b;
sort(num[c].score,num[c].score+5);
}
}else{
int& d = num[c].cnt;
num[c].score[d] = b;
d++;
if(d == 5) sort(num[c].score,num[c].score+5);
}
}
}
sort(num+1,num+cnt,cmp);
vector<vector<int>> ans;
for(int i=1;i<cnt;i++){
vector<int> t;
t.push_back(num[i].id);
int s = 0;
int d = num[i].cnt;
for(int j=0;j<min(5,d);j++){
s+=num[i].score[j];
}
s/=min(5,d);
t.push_back(s);
ans.push_back(t);
}
return ans;
}
};
int main(){
vector<vector<int>> myin =
{{1,91},{1,92},{2,93},{2,97},{1,60},{2,77},{1,65},{1,87},{1,100},{2,100},{2,76}}
;
Solution MyS;
vector<vector<int>> myout = MyS.highFive(myin);
printVec2(myout);
puts("");
return 0;
}
// 输出一维数组
void printVec1(vector<int>& v){
printf("{");
if(v.size()!=0) printf("%d",v[0]);
for(int i=1;i<v.size();i++){
printf(",%d",v[i]);
}
printf("}");
}
// 输出二维数组
void printVec2(vector<vector<int>>& v){
printf("{");
if(v.size()!=0) printVec1(v[0]);
for(int i=1;i<v.size();i++){
printf(",");
printVec1(v[i]);
}
printf("}");
}