面试题:环形链表的入口节点
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; } }
以上是关于面试题:环形链表的入口节点的主要内容,如果未能解决你的问题,请参考以下文章