zoukankan      html  css  js  c++  java
  • 链表中环的入口结点

    题目描述

    给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
     
    思路:
    利用快慢指针,先循环找到快慢指针值相等的位置;再将慢指针重置到头部,和快指针一起移动,但这次快慢指针都每次只移动一个位置。
     
    代码如下:
    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :
            val(x), next(NULL) {
        }
    };
    */
    class Solution {
    public:
        ListNode* EntryNodeOfLoop(ListNode* pHead)
        {
            if(pHead==NULL)
                return NULL;
            ListNode * p, * q;
            p=pHead,q=pHead;
            while(q!=NULL&&q->next!=NULL)
            {
                p=p->next;
                q=q->next->next;
                if(p==q)
                    break;
            }
            if(q==NULL||q->next==NULL)
                return NULL;
            p=pHead;
            while(p!=q)
            {
                p=p->next;
                q=q->next;
            }
            return p;
        }
    };
  • 相关阅读:
    docker (2) 私有仓库的建立
    golang (5) http 请求分析
    java (1)
    golang (5) ---工程管理
    Mac使用一些经验
    数组的遍历
    进制
    数组的初始化
    数组基本概念
    博客开始更新第一天
  • 原文地址:https://www.cnblogs.com/JsonZhangAA/p/12177286.html
Copyright © 2011-2022 走看看