首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
求环专题
判断单链表是否带环?若带环,求环的长度?求环的入口点
问题一:如何判断链表是否带环? 思路:利用快慢指针,定义两个指针,同时从链表的头节点出发,一个指针一次走一步,另一个指针一次走两步。如果走的快的指针追上了走的慢的指针,那么链表就包含环;如果走的快的指针走到了链表的末尾都没有追上另一个指针,那么链表就不包含环。 //判断单链表是否带环?ListNode* ListIsCircle(ListNode* first){if (first
阅读更多...
链表--判断链表是否带环?若带环求环的长度?若带环求环的入口点?
判断链表链表是否带环: 思路:给两个指针一快一慢,快的一次走两步,慢的一次走一步,如果两个指针最后相遇,则说明带环。 如果快指针到NULL,则说明没有环。 ListNode* IsHaveCircle(ListNode* pHead){assert(pHead);ListNode* pFast = pHead;ListNode* pSlow = pHead;//两个指针一个快一个慢,如果两
阅读更多...
判断链表是否有环并求环的入口和环的长度
方法: 求链表是否有环,最直观的方法是从头结点的地址开始,把下一个地址都取出来,然后比对,是否有相同的。但这个方法需要两两比较,算法时间复杂度较高。更好的一个做法是快慢指针(慢指针一次前进一个地址,快指针一次前进两个地址)同时从头结点出发,只有链表有环存在,则它们必定会相遇。快慢指针算法有一个注意点,慢指针进入环之前,快指针可能已经在环中绕了几次圈了。首先比较简单的是求环的长度,当快慢指针第一次
阅读更多...