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

运行结果

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

相关推荐
Pniubi20 分钟前
力扣24. 两两交换链表中的节点(递归)
算法·leetcode·链表
꧁细听勿语情꧂1 小时前
直接选择排序,堆排序,冒泡排序,递归快速排序、hoare版本、挖坑法、lomuto前后指针,非递归快速排序
c语言·开发语言·数据结构·算法
八十天环游世界1 小时前
财务自动化项目的ROI怎么测算?要看哪些指标?
经验分享
文丑颜不良啊1 小时前
LeetCode2741~2760题目解析
java·leetcode
俊俊几年的1 小时前
动态规划(Dynamic Programming)详解:从入门到 LeetCode Hot 100
linux·c++·算法·leetcode·嵌入式·动态规划·c
网安小学生(兼顾数据库版)2 小时前
艾体宝 TrueFoundry 如何让企业 AI 工具集成避免 “孤岛化“?
经验分享·艾体宝·艾体宝it·艾体宝truefoundry
小雉系统11 小时前
BcoreOS安全通信架构:FsSession 抗算法后门安全设计
算法·安全·架构
§ꦿCFོ༉11 小时前
嵌入式八股文—C语言入门学习(四)
c语言·开发语言·学习
唐墨12315 小时前
linux kernel 比较数据大小的宏定义
linux·算法