题解 | #【模板】堆#

【模板】堆

https://www.nowcoder.com/practice/13f61c8c92404f5ea5d6fa4c692869fb

#include <functional>
#include <iostream>
#include <queue>
#include <vector>
using namespace std;

class MaxHeap {
  public:
    MaxHeap(): heapSize(0) {};
    void push(int x) {
        // nums.push_back(x);
        pque.push(x);
        heapSize++;
        // heapify_up(heapSize - 1);
    };
    int top() {
        if (pque.size() == 0) return -1;
        // return nums[0];
        return pque.top();
    };
    void pop() {
        if (pque.size() == 0) {
            cout << "empty" << endl;
            return;
        }
        cout << pque.top() << endl;
        pque.pop();
        // swap(nums[0], nums[heapSize - 1]);
        // heapSize--;
        // heapify_down(0);
    };
  private:
    vector<int> nums;
    int heapSize;
    function<bool(int,int)> cmp= [](int a,int b){
        return a<b;
    };
    priority_queue<int,vector<int>,function<bool(int,int)>> pque{cmp};
    void heapify_up(int i) {
        int parent = (i - 1) / 2;
        while (parent >= 0) {
            heapify_down(parent);
            parent--;
        }
    }
    void heapify_down(int i) {
        int largest = i;
        int left = i * 2 + 1;
        int right = i * 2 + 2;
        if (left < heapSize && nums[largest] < nums[left]) largest = left;
        if (right < heapSize && nums[largest] < nums[right]) largest = right;
        if (largest != i) {
            swap(nums[largest], nums[i]);
            heapify_down(largest);
        }
    }
};


int main() {
    MaxHeap p;
    int n, a;
    cin >> n;
    string op;
    while (cin >> op) {
        if (op == "push") {
            cin >> a;
            p.push(a);
        } else if (op == "top") {
            int x = p.top();
            if (x != -1)
                cout << x << endl;
            else cout << "empty" << endl;
        } else if (op == "pop") {
            p.pop();
        }
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

Ryan188:我觉得你简历最核心的问题就是太大众化。 你要有一个认知就是,如果你是面试官,你是HR,其实他们每天都会收到非常多大量重复的像你这种简历。 就是说你的项目不是一个真实的上线的项目,可能是从网上学习而来的,或者是直接copy别人的项目,没有新意,没有展现出你自己对技术的思考,而且你的学历也不占优,自然而然就很难有人去选择你。 所以要做的实际上是差异化方向的工作,也就是“给我一个选择你的理由”,比如最近很火的ai,你可以写一个ai相关项目比如问答应用或者mcp编写或者agent搭建,需要你先花点时间学习,34天吧,展现你对这方面相较于其他人特有的思考; 或者写相关技术博客输出一些技术内容,有具体可以量化的成果等等去增加你的竞争力。 但以上这些都是后话,我去年在你这个时候也是没人理我,咱们双非学历也没实习,难找也正常,我当时整个3月份都没人鸟我,直到有个新招的岗位,很缺人很急,流程很快,所以我一下子进去了,所以运气方面也很重要,需要你一直坚持喝复盘,直到看到光明,加油兄弟
简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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