对撞双指针
有序数组找两数之和:while (l < r) { int s = a[l] + a[r]; if (s == t) ...; else if (s < t) l++; else r--; }
滑动窗口
r 不断右扩,窗口不满足条件时 l 收缩;过程中维护窗口内的和/计数,O(n) 扫一遍。
C++ 机试动画
本课导读
双指针是机试最常用的优化套路:把两层循环的 O(n²) 压到 O(n)。这一课讲对撞双指针和滑动窗口两种形态。
有序数组找两数之和:while (l < r) { int s = a[l] + a[r]; if (s == t) ...; else if (s < t) l++; else r--; }
r 不断右扩,窗口不满足条件时 l 收缩;过程中维护窗口内的和/计数,O(n) 扫一遍。
把 C++ 做题手感练出来
这套课只讲机试最常用的 C++:输入输出、类型、数组、字符串和 STL。先把这些模板练熟,再去刷数据结构和算法题,效率会高很多。