求第 k 大

补全 kth_largest:建堆之后连弹 k 次,返回最后弹出的那个。这次求第 3 大。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

求前 k 大的那一串

补全 top_k:返回前 k 大组成的数组(从大到小)。这次求前 3 大,用 / 拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

大顶堆里最小的在哪

大顶堆的堆顶是最大的,那最小的在哪儿?——只可能在叶子里。补全 min_of_heap:只在叶子那一段里找最小的(长度 n 的堆,叶子是下标 n / 2 到 n - 1)。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

优先队列和普通队列差在哪

第 1 步:四个任务,数字是优先级 第 2 步:最急的有两个:都是 5 第 3 步:同级:先来的先处理 第 4 步:接着是后来的那个 5 第 5 步:然后是 2,最后是 1 2 5 1 5 优先队列和普通队列的区别是【0】。

开始练习 →

两个任务优先级一样怎么办(C++)

两个任务优先级相同时,通常约定【0】。

开始练习 →

第一个被处理的是哪个任务

四个任务和它们的优先级(数字越大越急)。运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #include <

开始练习 →

写一个按优先级出队

补全 pop_max:取出并返回优先级最高的任务名,优先级相同时取先进来的那个。补全后输出第一个被处理的任务。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

全部调度完顺序是什么

同一个 pop_max。把四个任务全部处理完,把处理顺序拼起来输出(用 / 隔开)。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

同级要先来先服务

同一个 pop_max,这次换一批任务:扩容先进来、告警后进来,两个都是优先级 5。把前两个被处理的拼起来输出——写成 >= 比较的话这里就会反。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

插队来了个更急的

四个任务排着队的时候,又来了一个优先级 6 的「回滚」。补全 pop_max 后输出第一个被处理的任务。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →