交付:四种技巧一起验收

交付:四种技巧一起验收

这是这条路线的最终作品。把对撞双指针、快慢指针、两种滑动窗口、差分全写出来,然后一次验完五条: 对撞找和为 40 的两个下标是 2 和 3 快慢找中点是 2;无环判 False、有环判 True 固定

阅读更多 →
第四步:差分

第四步:差分

写出 range_add 和 restore,做 [0,2] 加 5、[1,3] 加 2,把还原结果拼起来输出。

阅读更多 →
第三步:两种窗口

第三步:两种窗口

写出 max_window(固定窗口最大和,k=3)和 min_len(和不小于 50 的最短长度)。 把两个结果拼起来输出。

阅读更多 →
第二步:快慢指针

第二步:快慢指针

写出 mid_index(找中点)和 has_cycle(判环)。 把三个结果拼起来输出:中点下标、无环判断、有环判断。

阅读更多 →
第一步:对撞双指针

第一步:对撞双指针

最终作品第一步:写出 two_sum(有序数组,两数之和)。 把两个下标拼起来输出(目标 40)。

阅读更多 →
三个结果都对得上吗

三个结果都对得上吗

运行下面这段程序: def two_sum(a, target): lo = 0 hi = len(a) - 1 while lo < hi: s = a

阅读更多 →
优化完之后必须做的一件事

优化完之后必须做的一件事

把暴力法优化成 O(n) 之后,必须做的是【0】。

阅读更多 →
看到一个双循环,先问什么

看到一个双循环,先问什么

想把一个双循环优化掉,先要问【0】。

阅读更多 →
找出所有字符都不同的那些窗口有几个

找出所有字符都不同的那些窗口有几个

窗口长 3 滑一遍,数出有几个窗口里三个字符互不相同。 (互不相同等价于 len(cnt) == 3——所以上一节那个 del 在这里是决定性的。)

阅读更多 →
数出窗口里出现最多的字符出现几次

数出窗口里出现最多的字符出现几次

补全代码:窗口长 3 滑到末尾,输出最后那个窗口里出现最多的字符出现了几次。

阅读更多 →