Leetcode—2558.从数量最多的堆取走礼物【简单】

2023每日刷题(十二)

Leetcode---2558.从数量最多的堆取走礼物

大顶堆实现代码

cpp 复制代码
void swap(int *a, int *b) {
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

void downAdjustHeap(int *heap, int low, int high) {
    int i = low;
    int j = 2 * i + 1;
    while(j <= high) {
        if(j + 1 <= high && heap[j + 1] > heap[j]) {
            j = j + 1;
        }
        if(heap[j] > heap[i]) {
            swap(&heap[j], &heap[i]);
            i = j;
            j = 2 * i + 1;
        } else {
            break;
        }
    }
}

void createHeap(int *arr, int n) {
    int i = 0;
    for(i = n / 2 - 1; i >= 0; i--) {
        downAdjustHeap(arr, i, n - 1);
    }
}

long long pickGifts(int* gifts, int giftsSize, int k){
    createHeap(gifts, giftsSize);
    int i = 0;
    for(i = 0; i < k; i++) {
        gifts[0] = sqrt(gifts[0]);
        downAdjustHeap(gifts, 0, giftsSize - 1);
    }
    long long ans = 0;
    for(i = 0; i < giftsSize; i++) {
        ans += gifts[i];
    }
    return ans;
}

运行结果

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

相关推荐
掌心向暖RPA自动化21 小时前
如何用影刀RPA自动化采集公号对标账号历史文章?(上篇) | 选题库+标题库+案例库搭建必备
经验分享·自动化·新媒体运营·影刀rpa
不穿格子的程序员21 小时前
从零开始写算法——二叉树篇3:对称二叉树 + 二叉树直径
算法
米优21 小时前
C/C++中实现自定义自动释放堆内存空间类
c语言·开发语言·c++
中屹指纹浏览器1 天前
大模型赋能指纹浏览器:基于安全 GPT 的动态风控对抗与指纹生成技术
经验分享·笔记
binary思维1 天前
C语言应用领域及操作Excel方法
c语言
meizisay1 天前
亿可达_自动发邮件攻略
人工智能·经验分享·低代码·职场和发展·自动化
蒲小英1 天前
算法-使用技巧
算法
0x7F7F7F7F1 天前
数学知识——博弈论
数学·算法
LinHenrY12271 天前
初识C语言(预处理详解)
c语言·开发语言
爱学习的小仙女!1 天前
顺序表定义、特点和基本操作(含C代码详细讲解)及时间复杂度
数据结构·算法