一句话理解
有序数组去重可以用双指针原地写。
为什么要学
unique 的手写版。
讲解
慢指针表示下一个要写的位置,快指针扫。不同才写入。
无序数组应先排序,或用 set。
例子
int k = 0;
for (int i = 0; i < n; i++)
if (k == 0 || a[i] != a[k - 1]) a[k++] = a[i];
k 是新长度。
常见错误
- 无序直接去相邻重复。
- k 从 1 起却 n=0。
第 210 课
有序数组去重可以用双指针原地写。
unique 的手写版。
慢指针表示下一个要写的位置,快指针扫。不同才写入。
无序数组应先排序,或用 set。
int k = 0;
for (int i = 0; i < n; i++)
if (k == 0 || a[i] != a[k - 1]) a[k++] = a[i];
k 是新长度。
相邻去重要求相同元素已经挨在一起,所以常先排序。
Ctrl / ⌘ + Enter 运行 · Tab 缩进
左右方向键也可翻课