综合的窗口最大值之和

运行下面这段程序: 综合:按题目选单调栈(最近更值)还是单调队列(滑窗最值)。 #include <algorithm> #include <deque> #include <iostream> #inc

开始练习 →

综合补全:单调栈弹栈

补全 next_greater 的弹栈比较,输出第 1 个数(下标 1)的答案。 综合:按题目选单调栈(最近更值)还是单调队列(滑窗最值)。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

综合补全:单调队列队尾

补全 window_max 的队尾维护,输出所有窗口最大值之和。 综合:按题目选单调栈(最近更值)还是单调队列(滑窗最值)。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

综合补全:最大矩形宽度

补全 largest_rect 的宽度计算,输出最大面积。 综合:按题目选单调栈(最近更值)还是单调队列(滑窗最值)。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

综合补全:窗口最小队尾

补全 window_min 的队尾维护,输出每个窗口的最小值。 综合:按题目选单调栈(最近更值)还是单调队列(滑窗最值)。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

对拍时暴力解法干什么用

用随机数据「对拍」时,那个又慢又简单的暴力解法的作用是【0】。

开始练习 →

写下一个更大元素

场景:实验机上 ~/work/mono/nge.cpp 读入一个数组,要输出每个数右边第一个严格更大的数,可 next_greater 还是空的。 任务:补全 next_greater(用单调栈,没有更大的输出 -1)。make 编译(带内

开始练习 →

五十万个数的滑窗最大

场景:~/work/mono/wmax.cpp 求所有长度为 k 的窗口的最大值之和,结果是对的,可 n = 50 万、k 很大时要跑十几秒。 任务:改写 wmax.cpp,让 n = 50 万也能在 1 秒内算完。make 编译(-O2)

开始练习 →

能随时取最大值的队列

场景:~/work/mono/mq.cpp 要实现一个先进先出的队列,还要能随时 O(1) 输出队里的最大值,可 push、pop 还没写完。 任务:补全 MaxQueue 的 push 和 pop。make 编译(带内存检查)后用 sam

开始练习 →

修好重复值的窗口最大

场景:~/work/mono/dup.cpp 求每个窗口的最大值,队列里存的是值。数都不一样时是对的,一有重复值就错。 任务:找出并修好出错的那个条件。make 编译(带内存检查)后用 sample.txt 自测;check 会用大量重复值

开始练习 →