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;
}

运行结果

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

相关推荐
Zsy_05100315 小时前
【数据结构】二叉树介绍及C语言代码实现
c语言·数据结构·算法
Ayanami_Reii15 小时前
基础数学算法-移棋子游戏
数学·算法·游戏·博弈论·sg函数
谁刺我心15 小时前
蓝桥杯C++常用STL
c++·算法·蓝桥杯
wubba lubba dub dub75015 小时前
第二十七周 学习周报
学习·算法·机器学习
云半S一15 小时前
春招准备之测试基础理论篇
经验分享·笔记·功能测试·测试覆盖率
小白程序员成长日记15 小时前
力扣每日一题 2025.11.30
数据结构·算法·leetcode
崎岖Qiu15 小时前
二叉树的非递归后序遍历-双栈法
算法·二叉树·力扣·深度优先遍历·
竹杖芒鞋轻胜马,夏天喜欢吃西瓜15 小时前
哈希算法解析
算法·哈希算法
执笔论英雄15 小时前
【RL】 ROLL中负载均衡
运维·算法·负载均衡
星辞树15 小时前
从计数到预测:深入浅出词向量 (Word Vectors) —— Stanford CS224n 作业实战记录
算法