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

运行结果

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

相关推荐
平凡但不平庸的码农1 小时前
Go Slice 详解
算法·golang
三流架构师1 小时前
事业单位资源合集(第二辑)
经验分享
Jasmine_llq5 小时前
《B3867 [GESP202309 三级] 小杨的储蓄》
算法·循环遍历·数组累加(模拟)·索引定位·顺序输出
啦啦啦_99995 小时前
案例之 逻辑回归_电信用户流失预测
算法·机器学习·逻辑回归
风筝在晴天搁浅5 小时前
快手/字节 CodeTop LeetCode 415.字符串相加
算法·leetcode
DragonnAi6 小时前
猫咪如厕检测与分类识别系统系列【十四】 项目结构重新整理-即将开源完整算法
算法·开源
机器视觉_Explorer6 小时前
【halcon】编程技巧:鼠标擦除
图像处理·人工智能·深度学习·算法·视觉检测
沃虎Chinty-036 小时前
CHIP LAN(片式网络变压器)选型决策指南:从需求到量产
经验分享·智能硬件
wljy16 小时前
二、静态库的制作和使用
linux·c语言·开发语言·c++
灵智实验室7 小时前
PX4状态估计技术EKF2详解(二):EKF2 误差状态动力学与协方差传播
算法·无人机·px 4