测试飞书一面
现在有一个班级,学生列表 [{name:"张三",age:18},{},{}]
现在班级有一个排名册,["李四","张三",.....]
现在这些学生需要去操场上排队,按照排名册进行排队。
输出排队后的学生列表。
实现一个函数。
时间复杂度为O(nlogn)
#include<bits/stdc++.h>
using namespace std;
typedef struct {
string name;
int age;
} student;
vector<student>px( vector<student>students, vector<string>ranklist){
vector<student>ans;
map<string,student>mp;
for(int i=0;i<students.size();i++){
mp[students[i].name]=students[i];//map的key用name,值是student
}
for(int i=0;i<ranklist.size();i++){
ans.push_back(mp[ranklist[i]]);
}
return ans;
}
int main(){
vector<student>students;
students.push_back(student{"张三",18});
students.push_back(student{"李四",19});
students.push_back(student{"王五",20});
vector<string>ranklist;
ranklist.push_back("李四");
ranklist.push_back("张三");
ranklist.push_back("王五");
vector<student>ans=px(students,ranklist);
for(int i=0;i<ans.size();i++){
cout<<ans[i].name<<'\t'<<ans[i].age<<endl;
}
return 0;
}

浙公网安备 33010602011771号