让窗口滑起来

补全 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】。

开始练习 →

和不小于 50 的最短窗口

数组是 17 8 15 13 23 24 19。运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #include <

开始练习 →

最长的不重复子串

字符串是 abcabcbb。运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #include <string>

开始练习 →

和不小于目标的最短窗口

补全 min_len:右端一路扩大,一旦满足就把左端往里收,记住最短的长度。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

补全最长不重复子串

补全 longest_unique:右端每进一个字符,如果它在窗口里出现过,就把左端跳到那次出现的后面。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →