常见算法
链表:
1.链表有环无环
a:快指针和慢指针相交
2.环形链表相交,交点?
a:判断是否是环形链表,如果是环形链表,当走到交点的时候快指针的移动速度改成和慢指针一样,然后再判断相等
3两个非环形链表求交点
a1:快慢指针法:当快指针走到头时,快指针指向慢指针的链表,慢指针指到头时指向快指针的链表头,总有一时刻是相等的。
a2:穷举方式
a3:先求两个链表的差步数,然后夸到diff步,然后进行比较
4.链表反转
a:设preNode,改变当前指针的的指向为preNode,依次循环
5判断回文链表
a:快慢指针移动,移动到末尾时慢指针进行反转操作,快指针移动到头结点,进行比较
6.求链表的中点
a1:暴力求解:循环两遍
a2:采用快慢指针,快指针移动速度是慢指针的两倍,如果不为null,返回慢指针指向结点级为所求
7.求链表的第k个结点
a:采用快慢指针移动k-1