为什么不用每次重算

不重算整个窗口而是「一进一出」,省下的是【0】。

开始练习 →

固定窗口的第一步(C++)

写固定窗口,第一步应该【0】。

开始练习 →

长度 3 的窗口最大和

数组是 17 8 15 13 23 24 19,窗口长度 3。运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #incl

开始练习 →

先把初始窗口建起来

补全代码:把前 3 个加起来当初始窗口,输出这个和。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

让窗口滑起来

补全 max_window:建好初始窗口之后,每滑一格加上新进来的、减去出去的,一路记住最大的和。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

把每个窗口的和都列出来

补全代码:算出每一个长度为 3 的窗口的和,按顺序用 / 连起来输出。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

一进一出省了多少

数组长 n、窗口长 k:每次重算是 (n-k+1)×k 次加法,一进一出是 k + (n-k)×2 次。补全两个函数,算 n=1000、k=100 的情况,用 / 连起来输出(重算在前)。 (本题用 g++ -std=c++17 -O0 编

开始练习 →

可变窗口和固定窗口的区别

第 1 步:扩到和 53,够了 第 2 步:收左端,和降到 36 第 3 步:扩到和 59,够了 第 4 步:收左端,和降到 36 第 5 步:扩到和 60,够了 第 6 步:收左端,和降到 47 第 7 步:扩到和 66,够了 第 8 步

开始练习 →

什么时候该收缩左端

求「和不小于目标的最短窗口」时,收缩左端的时机是【0】。

开始练习 →

两端只往右为何还是 O(n)

可变窗口的两个指针都只往右,总代价是 O(n),因为【0】。

开始练习 →