关注
第一题:双指针 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;
}
查看原帖
点赞 评论
相关推荐
01-29 19:56
西安电子科技大学 自然语言处理 点赞 评论 收藏
分享
02-10 10:14
广州大学 golang 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客新年AI问运 #
14134次浏览 168人参与
# 你最讨厌面试被问什么 #
1399次浏览 26人参与
# 牛客AI体验站 #
17889次浏览 303人参与
# 有转正机会的小厂实习值得去吗? #
732次浏览 19人参与
# 牛友们,签完三方你在忙什么? #
137413次浏览 994人参与
# 担心入职之后被发现很菜怎么办 #
282555次浏览 1186人参与
# 如何缓解入职前的焦虑 #
258906次浏览 1451人参与
# 校招第一份工作你干了多久? #
139429次浏览 609人参与
# 去年的flag与今年的小目标 #
34331次浏览 337人参与
# 牛客租房专区 #
151645次浏览 1490人参与
# 秋招开始捡漏了吗 #
229486次浏览 1044人参与
# 九月了,是考研还是就业? #
89376次浏览 557人参与
# 秋招投递攻略 #
268819次浏览 2554人参与
# 这份实习,有没有动摇过你的职业方向? #
2276次浏览 40人参与
# 搜狐工作体验 #
4121次浏览 30人参与
# 机械人求职现状 #
33666次浏览 297人参与
# 我是XXX,请攻击我最薄弱的地方 #
61808次浏览 410人参与
# 用友工作体验 #
18091次浏览 151人参与
# 你的工资什么时候发? #
57531次浏览 355人参与
# 你的实习什么时候入职 #
348128次浏览 2291人参与