• 一个链表中包含环,请找出该链表的环的入口结点。


    链接:https://www.nowcoder.com/questionTerminal/253d2c59ec3e4bc68da16833f79a38e4
    来源:牛客网

    思路:leetcode上也有这道题,具体思想是,两个指针fast和slow,fast以slow两倍速度前进,
    如果没有环,那么fast和slow不会相遇此时返回null;如果有环,那fast和slow肯定会再次相遇
    相遇的时候,fast刚好比slow多走了一圈环的长度。  用图来描述下,当fast与slow相遇时,fast走过的距离为a + b + c + b,而slow走过的距离为
    a + b,因为fast是slow速度的两倍,则有a+b+c+b = 2*(a+b),登出a=c;此时slow节点所处X处
    到环起点Y处的距离a和X节点到Y处距离c其实是相等的,此时第三个指针p从x处,以和slow指针
    相同的速度前进,当它两相遇时,即为环的起点Y处!
     java:
    public class Solution {
     
        public ListNode EntryNodeOfLoop(ListNode pHead)
        {
            ListNode fast = pHead;
            ListNode slow = pHead;
            while(fast !=null && fast.next !=null) {
                fast = fast.next.next;
                slow = slow.next;
                if(fast == slow) {
                    ListNode p = pHead;
                    while( p != slow) {
                        p = p.next;
                        slow = slow.next;
                    }
                    return p;
                }
            }
            return null;
        }
    }
    

      c++

    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :
            val(x), next(NULL) {
        }
    };
    */
    class Solution {
    public:
        ListNode* EntryNodeOfLoop(ListNode* pHead)
        {
            ListNode* fast=pHead;
            ListNode* slow=pHead;
             
            while(fast!=NULL&&fast->next!=NULL){
                fast=fast->next->next;
                slow=slow->next;
                if(fast==slow){
                    ListNode*p=pHead;
                    while(p!=slow){
                        p=p->next;
                        slow=slow->next;
                    }
                    return p;
           
                }
            }
            return NULL;  
     
        }
    };
    

      

  • 相关阅读:
    TC字符界面菜单程序【原创】
    图片定时自动播放
    根据登录的不同权限,登录不同的窗口!
    html布局
    sprig 的基本使用方法和运用领域
    hibernate的链接数据库的基本步骤
    Jquery
    Java链接数据库的基本步骤
    ajax
    SQL索引的初步使用
  • 原文地址:https://www.cnblogs.com/Czc963239044/p/6974190.html
Copyright © 2020-2023  润新知