题解 | #【模板】堆#

【模板】堆

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

#include<algorithm>
#include<iostream>

using namespace std;
const int N = 100010;
int siz, h[N];
void up(int u){
    while(u > 1 && h[u / 2] < h[u]){
        swap(h[u], h[u / 2]);
        u /= 2;
    }
}
void down(int u){
    int t = u;
    if(u * 2 <= siz && h[u * 2] > h[t]) t = u * 2;
    if(u * 2 + 1 <= siz && h[u * 2 + 1] > h[t]) t = u * 2 + 1;
    if(u != t){
        swap(h[u], h[t]);
        down(t);
    }
}

int main() {
    int n;
    cin >> n;
    while(n --){
        string op;
        cin >> op;
        if(op == "push"){
            int x;
            cin >> x;
            h[++ siz] = x;
            up(siz); 
        }
        else if(op == "top")
            if(siz) cout << h[1] << endl;
            else cout << "empty" << endl;
        else{
            if(siz){
                cout << h[1] << endl;
                h[1] = h[siz --];
                down(1);
            }
            else cout << "empty" << endl;
        }
    }
    return 0;
}

全部评论

相关推荐

哈哈哈哈哈哈哈哈哈哈这个世界太美好了
凉风落木楚山秋:毕业出路老师不管,你盖个章他好交差就完事了,等你盖完毕业了就不关他事情了
点赞 评论 收藏
分享
积极的小学生不要香菜:你才沟通多少,没500不要说难
点赞 评论 收藏
分享
嵐jlu:我是山川🐔里🐔🧱的,阿里系简历全过; 你这简历一看就还是半成品啊,没有荣誉经历奖项什么的吗?
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:16
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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