补写最短达标窗口

场景:实验机上 ~/work/tp/minwin.cpp 读入 n、target 和 n 个正整数,要输出和不小于 target 的最短连续子段长度(没有就输出 0)。min_len 还没写。 任务:补全 min_len(右扩左收的可变窗口

开始练习 →

三十万个数的两数之和

场景:~/work/tp/pairs.cpp 读入一个严格递增的数组和 target,统计有多少对下标 i<j 满足 a[i]+a[j]=target。结果是对的,可它是双重循环,n = 30 万时要跑很久。 任务:改写成对撞双指针,

开始练习 →

修好倒序输出的下溢

场景:~/work/tp/back.cpp 读入 n 个数(n 可能是 0),倒着输出。它用 size_t 下标从 v.size() - 1 往下走,一运行就越界崩溃。Makefile 带了内存检查。 任务:修好倒序循环,n = 0 时输出

开始练习 →

修好收缩时的计数

场景:~/work/tp/kdist.cpp 求字符串里「最多含 K 种字符」的最长连续子串长度。左端收缩时只把计数减一,减到 0 的字符没有从 map 里删掉,结果时对时错。 任务:修好收缩那一段。make 编译后用 sample.txt

开始练习 →

补写差分区间加

场景:~/work/tp/diff.cpp 读入 n、m 和 m 条「l r v」(给下标 l..r 每个数加 v,从 0 数),输出最终的 n 个数。range_add 和还原还没写。 任务:补全差分:区间加只动两格,最后求前缀和还原。m

开始练习 →

贪心每一步是怎么选的

贪心算法在每一步都【0】。

开始练习 →

贪心和暴力枚举差在哪

第 1 步:要找 63,面值 25 10 5 1 第 2 步:拿一个 25,还剩 38 第 3 步:拿一个 25,还剩 13 第 4 步:拿一个 10,还剩 3 第 5 步:剩 3 比 5 小,跳过 5 第 6 步:拿一个 1,还剩 2 第

开始练习 →

贪心最大的风险是什么

用贪心最大的风险是【0】。

开始练习 →

什么样的问题能用贪心

一个问题能用贪心,是因为【0】。

开始练习 →

判断贪心对不对最省事的办法

想知道一个贪心策略对不对,最省事的办法是【0】。

开始练习 →