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

运行结果

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

相关推荐
不穿格子的程序员5 分钟前
从零开始刷算法-单调栈-每日温度
算法·单调栈
麦烤楽鸡翅7 分钟前
挡住洪水 (牛客)
java·数据结构·c++·python·算法·bfs·牛客
MicroTech20257 分钟前
微算法科技(NASDAQ MLGO)采用动态层次管理和位置聚类技术,修改pBFT算法以提高私有区块链网络运行效率
科技·算法·聚类
~~李木子~~7 分钟前
五子棋项目Alpha-Beta剪枝与MCTS+神经网络实现人机对弈算法对比报告
神经网络·算法·剪枝
bigdata-rookie8 分钟前
JVM 垃圾收集器介绍
java·jvm·算法
ʚ希希ɞ ྀ9 分钟前
leeCode hot 100 !!!持续更新中
数据结构·算法·leetcode
lemontree194510 分钟前
CRC8算法通用版本
算法
热爱生活的猴子11 分钟前
算法322. 零钱兑换
算法
剪一朵云爱着13 分钟前
力扣1539. 第 k 个缺失的正整数
算法·leetcode
摸鱼仙人~19 分钟前
针对编程面试和算法题的基础书籍
算法·面试·职场和发展