默认 priority_queue 的顶
运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #include <utility> #include
加上 greater 之后的顶
运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #include <utility> #include
补全:写一个小根堆
补全 pq 的声明,让它变成小根堆,然后把五个数依次弹出,用 / 拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)
补全:按优先级的比较器
补全比较器 ByPrio:优先级大的先出;优先级相同,先进来的(seq 小的)先出。把出队顺序用 / 拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)
补全:只留 K 个的小根堆
补全:从一串数里找最大的 3 个。用一个小根堆,堆里多于 3 个就把最小的弹掉。最后从大到小输出,用 / 拼起来。 (本题用 g++ -std=c++17 -O0 编译。)
补全:第 2 小用大根堆
补全:求一串数里第 2 小的数。用一个只留 2 个元素的大根堆,最后堆顶就是答案。 (本题用 g++ -std=c++17 -O0 编译。)
补全:lambda 比较器
补全 lambda 比较器 cmp:按个位数从小到大出队。把五个数依次弹出,用 / 拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)
乱序数组怎么建堆最快
第 1 步:乱序:17 24 15 13 23 第 2 步:叶子本身就是小堆,跳过 第 3 步:先沉下标 1:24 不用动 第 4 步:再沉下标 0:17 换 24 第 5 步:17 继续沉,换 23 第 6 步:建好了:24 23 15
为什么要从后往前(C++)
建堆必须从后往前做,因为【0】。
长度 9 时最后的非叶子在哪
一个长度为 9 的数组当堆,最后一个有孩子的节点下标是【0】。