链表中环的入口节点-剑指offer(Java实现)

题目描述:

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

解题思路:

  • 遍历链表,将链表中每一个节点存放进链表中,每次存放前,要判断链表是否包含当前链表,如果包含,则说明此链表是环链表的入口节点。如果当前节点为空,则说明此链表没有环。

代码实现:

import java.util.*;

public class Solution {
    public ListNode EntryNodeOfLoop(ListNode pHead){
        if (pHead == null || pHead.next == null) {
            return null;
        }
        List<ListNode> listNodes = new LinkedList<>();
        while (pHead != null) {
            //如果链表中存在此链表,说明此节点为入口节点
            if (listNodes.contains(pHead)) {
                return pHead;
            }
            listNodes.add(pHead);
            pHead = pHead.next;
        }
        return null;
    }
}

 

上一篇:链表之单链表


下一篇:牛客网——华为2016研发工程师编程题(C++)