测试飞书一面

现在有一个班级,学生列表  [{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;
}

 

posted @ 2025-12-02 21:48  Annaprincess  阅读(5)  评论(0)    收藏  举报