1.数组和链表的区别
- 数组在内存中连续存放,链表的存放位置不受约束;
- 数组查询效率高,链表查询需要遍历复杂度为O(n);
- 数组插入删除不灵活,链表插入删除容易;
- 数组大小固定,不能扩展,链表大小不固定,方便扩展;
2.如何判断单链表是否有环
- 设置两个指针,慢指针slow步长为1,快指针fast步长为2,若slow与fast相遇则链表有环,否则无环;
3.如何寻找单链表环的入口
- 设置两个指针,慢指针slow步长为1,快指针fast步长为2,当slow与fast相遇,确认slow入环;
- 让slow从当前位置走一圈,直到再次与fast相遇,计算环中结点数目n;
- 让slow从头走步长为1,fast从slow所在位置每次走n步,知道slow与fast相遇,则slow在入口处。