• 【剑指offer】链表中环的入口结点


    题目链接:链表中环的入口结点

     

    题意:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。

     

    题解:我们设置两个指针,一个走的快,一个走得慢。如果有环,快慢指针一定会相遇。

    并且,两个指针一个从头走,一个走相遇点走,最后一定会在环入口相遇。

    所以我们先找到环节点的个数,再让快指针先走c环节点个,就能找到环入口节点。

     

    代码:

     1 /*
     2 struct ListNode {
     3     int val;
     4     struct ListNode *next;
     5     ListNode(int x) :
     6         val(x), next(NULL) {
     7     }
     8 };
     9 */
    10 class Solution {
    11 public:
    12     ListNode* EntryNodeOfLoop(ListNode* pHead){
    13         //快指针和慢指针
    14         ListNode* fast = pHead,*slow=pHead->next;
    15         while(fast!=slow && fast!=NULL && slow != NULL){
    16             slow = slow->next;
    17             fast = fast->next;
    18             if(fast!=NULL)    fast = fast->next;
    19         }
    20         //链表环节点个数
    21         int cnt = 1;
    22         ListNode *node = fast->next;
    23         if(fast == slow && fast!=NULL){
    24             while(node != fast){
    25                 node = node->next;
    26                 cnt++;
    27             }
    28         }
    29         else    return NULL;
    30        
    31         fast = pHead;slow = pHead;
    32         //fast先走cnt
    33         for(int i = 0; i < cnt; i++)    fast = fast->next;
    34         //找到入口
    35         while(fast != slow){
    36             fast = fast->next;
    37             slow = slow->next;
    38         }
    39         return fast;
    40     }
    41 };
  • 相关阅读:
    Microsoft Dynamics CRM 常用JS语法(已转成vs2017语法提示)
    IIS7如何实现访问HTTP跳转到HTTPS访问
    C#调用PB写的com组件dll
    C# winform程序免安装.net framework在XP/win7/win10环境运行!
    文件上传漏洞
    OWASP TOP 10
    sql
    ASCII码查看
    sql注入--mysql
    sql注入--access
  • 原文地址:https://www.cnblogs.com/Asumi/p/12423379.html
Copyright © 2020-2023  润新知