- 盛最多水的容器
- 三数之和
- 删除链表的倒数第 N 个结点
- 下一个排列
- 接雨水
- 颜色分类
- 环形链表
142. 环形链表 II - 排序链表
- 相交链表
- 回文链表
- 移动零
- 寻找重复数
- 最短无序连续子数组
双指针常用于快慢链表
例:找中间值
在找中间值的过程中,分为上中位数,和下中位数。
原理上都是fast走两步,slow走一步。
上中位数
public ListNode findMedium(ListNode head){
if(head==null) return false;
ListNode fast=head,slow=head;
while(fast!=null&&fast.next!=null){
fast=fast.next.next;
slow=next;
}
return slow;
// 此时slow是下中位数。
}
下中位数
public ListNode findMedium(ListNode head){
if(head==null) return false;
ListNode fast=head,slow=head;
while(fast.next!=null&&fast.next.next!=null){
fast=fast.next.next;
slow=next;
}
return slow;
// 此时slow是上中位数。
}
当然有些地方为了特殊处理,会让fast=head.next,slow=head;