注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
Akuna Capital的线上oa,考了三个问题,60分钟,时间会有点紧张。会给自己的题解和一些思考,因为是新人不足之处还请大家指出,求加大米(地里好多东西看不到),谢谢大家。这是我做的oa感觉比较有希望的一个,然后刚开始找全职qd/qr/qt的工作,会的也不是很多,谢谢大家理解。
地里面也有他家的面经,提到过是从题库里抽三个题目,每个人遇到的题目可能会不一题考察的是对树的操作,还包括了一个广度优先搜索(BFS),中间还包括了一个对同层元素的排序。个人感觉和leetcode 332重新安排行程有点类似,有hard难度。leetcode 332最近刚好有学到,题解写在了这里:- std::vector<int> closestCities(int city_nodes, const std::vector<int>& city_from, const std::vector<int>& city_to, int company) {
- // Step 1: Build the graph
- std::vector<std::vector<int>> graph(city_nodes+ 1); // +1 to account for 1-based indexing
- for (int i = 0; i < city_from.size(); i++) {
- graph[city_from[i]].push_back(city_to[i]);
- graph[city_to[i]].push_back(city_from[i]);
- }
-
- // Step 2: BFS
- std::vector<int> result;
- std::queue<int> q;
- std::unordered_set<int> visited;
- q.push(company);
- visited.insert(company);
- while (!q.empty()) {
- int size = q.size();
- std::vector<int> level;
- // 同一层的节点都会被在这一步考虑
- for (int i = 0; i < size; i++) {
- int city = q.front();
- q.pop();
- for (int neighbor : graph[city]) {
- if (visited.find(neighbor) == visited.end()) {
- visited.insert(neighbor);
- level.push_back(neighbor);
- q.push(neighbor);
- }
- }
- }
- // Sort cities at the same level by their number
- sort(level.begin(), level.end());
- result.insert(result.end(), level.begin(), level.end());
- }
-
- return result;
- }
复制代码 |