一、链表
1. 链表的环
判断是否存在环:
- 多个结点的后继指针重复;
- 使用两个移动速度不同的指针,若相遇则存在环。循环条件
(fast != None) && (fast.next != None)
寻找环入口:
- 快慢指针相遇出就是环的入口;
- fast指针的移动速度为slow指针的两倍。
2. 移除重复元素
- 指针1指向不重复的最后一个结点;
- 指针2依次扫描,若不重复则更新指针1,否则移除。
3. 倒数第n个结点
- fast指针先走n步;
- fast与slow指针同时以步长 为1的速度向前走;
- fast走到链表尾时slow指针指向倒数第n个结点。
4. 拆分链表
二、数组
寻找连续子序列
使用start,end两个指针记录下标
2.移除重复元素
- 指针1指向不重复的最后一个元素;
- 指针2依次扫描,若不重复则更新指针1,否则移除。
3. 寻找中点或中位数
两个指针由两端向中间移动。
