关注
第一题:双指针 void core(string &str)
{
int len = str.size(), cur, right;
cur = right = len - 1;
for (; cur >= 0; cur--)
{
if (str[cur] == '#')
continue;
else
{
if (cur != right)
swap(str[cur], str[right]);
right--;
}
}
}
第二题:动态规划 略 第三题:最小公共祖先+dfs 代码未测试 struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if (!root || root == p || root == q) return root;
TreeNode *left = lowestCommonAncestor(root->left, p, q);
TreeNode *right = lowestCommonAncestor(root->right, p, q);
if (!left && !right)
return root;
if (!right) return right;
else return left;
}
bool dfs(TreeNode *root, TreeNode *p, TreeNode *q, vector<TreeNode*> &path, vector<vector<TreeNode*>> &res)
{
if (!root) return false;
if (root == p || root == q)
{
path.push_back(root);
res.push_back(path);
path.pop_back();
return true;
}
path.push_back(root);
if (dfs(root->left, p, q, path, res)) return true;
if (dfs(root->right, p, q, path, res)) return true;
path.pop_back();
return false;
}
vector<TreeNode*> findPath(TreeNode* root, TreeNode* p, TreeNode* q)
{
TreeNode *ancestor = lowestCommonAncestor(root, p, q);
vector<TreeNode*> left_path, right_path;
vector<vector<TreeNode*>> res;
dfs(ancestor->left, p, q, left_path, res);
dfs(ancestor->right, p, q, right_path, res);
vector<TreeNode*> path;
for (int i = res[0].size() - 1; i >= 0; i--)
path.push_back(res[0][i]);
path.push_back(ancestor);
for (int i = 0; i < (int)res[1].size() - 1; i++)
path.push_back(res[1][i]);
return path;
}
查看原帖
点赞 评论
相关推荐
12-23 21:55
重庆邮电大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
162183次浏览 2743人参与
# 长城汽车工作体验 #
12604次浏览 16人参与
# 牛客2025仙途报告 #
166次浏览 3人参与
# 你面试体验感最差/最好的公司 #
10864次浏览 185人参与
# 大家实习每天都在干啥 #
105741次浏览 569人参与
# 总结:哪家公司面试体验感最差 #
83056次浏览 387人参与
# 比亚迪工作体验 #
72580次浏览 275人参与
# 一人说一个提前实习的好处 #
6456次浏览 123人参与
# 秋招落幕,你是He or Be #
6532次浏览 145人参与
# 重来一次,你会对开始求职的自己说 #
4572次浏览 117人参与
# 实习没事做是福还是祸? #
11061次浏览 180人参与
# 今年你最想重开的一场面试是? #
2176次浏览 34人参与
# 团建是“福利”还是是 “渡劫” #
5477次浏览 131人参与
# 你小心翼翼的闯过多大的祸? #
9122次浏览 130人参与
# 运营来爆料 #
71512次浏览 450人参与
# 长鑫存储求职进展汇总 #
52041次浏览 240人参与
# 招聘要求与实际实习内容不符怎么办 #
144020次浏览 869人参与
# 工作中听到最受打击的一句话 #
4010次浏览 81人参与
# 如何排解工作中的焦虑 #
246307次浏览 2268人参与
# 大厂VS公务员你怎么选 #
72924次浏览 666人参与
查看2道真题和解析