题解 | #牛牛的二叉树问题#C++优先队列实现

牛牛的二叉树问题

https://www.nowcoder.com/practice/1b80046da95841a9b648b10f1106b04e

#include <algorithm>
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @param target double浮点型
     * @param m int整型
     * @return int整型vector
     */
    vector<int> findClosestElements(TreeNode* root, double target, int m) {
        // write code here
        vector<int> res;
        auto cmp = [](std::pair<int, double>& a, std::pair<int, double>& b) {
            return a.second > b.second;
        };
        priority_queue<std::pair<int, double>, vector<std::pair<int, double>>,
                       decltype(cmp)>
                       pr_que(cmp);

        queue<TreeNode*> que;
        que.push(root);

        while (!que.empty()) {
            auto node = que.front();
            que.pop();

            if (node->left)
                que.push(node->left);
            if (node->right)
                que.push(node->right);

            pr_que.push({node->val, abs(static_cast<double>(node->val) - target)});
        }

        for (int i = 0; i < m; ++i) {
            res.push_back(pr_que.top().first);
            pr_que.pop();
        }
        sort( res.begin(),res.end());
        return res;
    }
};

全部评论

相关推荐

07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 17:30
点赞 评论 收藏
分享
迟缓的斜杠青年巴比Q...:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
VirtualBoo...:都去逗他了?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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