腾讯音乐互娱0427 | 笔试算法题c++版答案参考

删除树的某些层

坑点:要写 而不是

int vis[1000005];
vector<TreeNode*> deleteLevel(TreeNode* root, vector<int>& a) {
    memset(vis, 0, sizeof vis);
    vis[0] = 1;
    for (int x : a) vis[x] = 1;
    vector<TreeNode*> ans;
    queue<pair<TreeNode*, int>> q;
    q.push({root, 1});
    while (!q.empty()) {
        auto [r, dep] = q.front();
        q.pop();
        if (vis[dep - 1] == 1 and !vis[dep]) ans.push_back(r);
        if (r->left) q.push({r->left, dep + 1});
        if (r->right) q.push({r->right, dep + 1});
        if (vis[dep + 1] == 1)  r->left = r->right = NULL;
    }
    return ans;
}

对二叉树的子树做k次异或操作

int ope[100005];
void dfs(TreeNode* root, int now, int id) {
    now ^= ope[root->val];
    root->val = now;
    if (root->left) dfs(root->left, now, id * 2);
    if (root->right) dfs(root->right, now, id * 2 + 1);
}
TreeNode* xorTree(TreeNode* root, vector<vector<int> >& op) {
    memset(ope, 0, sizeof ope);
    for (vector<int> v : op) {
        int q = v[0], w = v[1];
        ope[q] = (ope[q] xor w);
    }
    dfs(root, 0, 1);
    return root;
}

字符计数

#腾讯音乐娱乐笔试##腾讯音乐娱乐#
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-30 18:19
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务