关注
第一题:双指针 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;
}
查看原帖
点赞 评论
相关推荐
查看14道真题和解析
点赞 评论 收藏
分享
牛客热帖
正在热议
# 25届秋招总结 #
323355次浏览 3005人参与
# 上班苦还是上学苦呢? #
70094次浏览 623人参与
# 阿里云管培生offer #
36479次浏览 421人参与
# 地方国企笔面经互助 #
4416次浏览 12人参与
# 如果有时光机,你最想去到哪个年纪? #
20788次浏览 362人参与
# 选完offer后,你后悔学本专业吗 #
21603次浏览 157人参与
# 百度开奖 #
180659次浏览 1130人参与
# 我的实习求职记录 #
6067731次浏览 83522人参与
# 如何一边实习一边秋招 #
996017次浏览 12661人参与
# 入职第一天,你准备什么时候下班 #
21519次浏览 144人参与
# 招聘要求与实际实习内容不符怎么办 #
10696次浏览 276人参与
# bilibili求职进展汇总 #
32923次浏览 354人参与
# 许愿池 #
214580次浏览 2534人参与
# 学历or实习经历,哪个更重要 #
53545次浏览 419人参与
# 实习工作,你找得还顺利吗? #
247598次浏览 2905人参与
# 海康威视求职进展汇总 #
400430次浏览 3407人参与
# 通信硬件薪资爆料 #
607763次浏览 5153人参与
# 携程求职进展汇总 #
135426次浏览 928人参与
# 正在实习的你,几点下班 #
53019次浏览 395人参与
# 工作两年想退休了 #
52989次浏览 672人参与
# 如果再来一次,你还会学硬件吗 #
95085次浏览 1169人参与
# 软件开发薪资爆料 #
2193212次浏览 21880人参与