面试题:环形链表的入口节点

Posted aaron12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题:环形链表的入口节点相关的知识,希望对你有一定的参考价值。

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

思路1:双指针问题

public class Solution {
    ListNode EntryNodeOfLoop(ListNode pHead){
        if(pHead==null||pHead.next==null) return null;
        ListNode p1=pHead;
        ListNode p2=pHead;
        while(p1!=null||p1.next!=null){
            p1=p1.next;
            p2=p2.next.next;
            if(p1==p2){
                p1=pHead;
                while(p1!=p2){
                    p1=p1.next;
                    p2=p2.next;
                }
                if(p1==p2)  return p1;
            }
        }
        return null;
    }
}

思路2:使用HashSet

import java.util.HashSet;
public class Solution {
    public ListNode EntryNodeOfLoop(ListNode pHead){
        HashSet<ListNode> set=new HashSet<ListNode>();
        while(pHead!=null){
            //添加重复值返回false
            if(!set.add(pHead))  return pHead;
            pHead=pHead.next;
        }
        return null;
    }
}

 

以上是关于面试题:环形链表的入口节点的主要内容,如果未能解决你的问题,请参考以下文章

面试题23:链表中环的入口节点

看了有助于你面试的单链表的OJ面试题

剑指Offer:环形链表的入口

剑指Offer:环形链表的入口

面试题23:链表环中的入口节点

链表常见的题型(java实现)