网易笔试7.21ME,做的不好,估计挂了 ,说下我具体的思路,
第一题:直接翻转遍历,AC!
第二题:图的简历,求最小祖先即可,但是这里需要遍历m - > n中的每一个节点。没时间写了!
第三题:把数据处理好了后,直接翻转下,归并排序即可,但是我写的归并排序,最后只通过60%左右,不知道问题在哪里!
第四题:并查集,一道简单的并查集,但是我写出来后,答案总是错误,只通过10%,用的map写的,不知道问题出在哪里!我太菜了!
总之:都是简单题,但是我基本功不扎实,估计没戏了。
希望大佬们可以贴下你们的代码,讨论下。
如果解题思路有错误,请指正!
第一题的AC代码:一遍通过,写的不好,大佬们不要喷啊!
vector<vector<int> > invert_tree(int** node_data_list, int node_data_listRowLen, int* node_data_listColLen) {
int n = node_data_listRowLen;
int root = 0;
vector<vector<int> > tree(n+1, vector<int>());
vector<vector<int> > ans;
for(int i = 0; i < n; i++) {
int id = node_data_list[i][0];
int p = node_data_list[i][1];
if(p == 0) root = id;
else tree[p].push_back(id);
}
for(int i = 1; i <= n; i++) {
reverse(tree[i].begin(), tree[i].end());
}
ans.push_back({root,0});
dfs(root, 0, tree, ans);
return ans;
}
void dfs(int root, int parent, vector<vector<int> >& tree, vector<vector<int> >& ans) {
for(int i = 0; i < tree[root].size(); i++) {
ans.push_back({tree[root][i], root});
dfs(tree[root][i], root, tree, ans);
}
}
全部评论
(14) 回帖