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

运行结果

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

相关推荐
xsyaaaan3 小时前
leetcode-hot100-双指针:283移动零-11盛最多水的容器-15三数之和-42接雨水
算法·leetcode
炽烈小老头6 小时前
【每天学习一点算法 2026/03/08】相交链表
学习·算法·链表
串口哑火达人6 小时前
(六)RT-Thread网络通信--AT组件与ESP8266
c语言·单片机·嵌入式硬件·mcu·物联网
一碗白开水一6 小时前
【工具相关】OpenClaw 配置使用飞书:打造智能飞书助手全流程指南(亲测有效,放心享用)
人工智能·深度学习·算法·飞书
仰泳的熊猫7 小时前
题目2194:蓝桥杯2018年第九届真题-递增三元组
数据结构·c++·算法
Tisfy7 小时前
LeetCode 1888.使二进制字符串字符交替的最少反转次数:前缀和O(1)
算法·leetcode·字符串·题解
滴滴答滴答答8 小时前
机考刷题之 9 LeetCode 503 下一个更大元素 II
算法·leetcode·职场和发展
飞Link8 小时前
梯度下降的优化算法中,动量算法和指数加权平均的区别对比
人工智能·深度学习·算法
啊哦呃咦唔鱼8 小时前
LeetCode hot100-15 三数之和
数据结构·算法·leetcode
_日拱一卒8 小时前
LeetCode(力扣):杨辉三角||
算法·leetcode·职场和发展