美文网首页
23、链表中环的入口结点

23、链表中环的入口结点

作者: GIndoc | 来源:发表于2019-09-27 17:06 被阅读0次

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

https://www.nowcoder.com/questionTerminal/253d2c59ec3e4bc68da16833f79a38e4

/*
 public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {

    public ListNode EntryNodeOfLoop(ListNode pHead)
    {
        if(pHead==null) return null;
        ListNode meetNode = meetNode(pHead);      // 有环则为相遇节点,否则为null
        if(meetNode==null) return null;
        int nodeSize = 1;                         // 环的长度
        ListNode current = meetNode.next;         // 计算环的长度
        while(current != meetNode){
            ++nodeSize;
            current = current.next;
        }

        // 节点current先往前走nodeSize(环的长度),然后再和behind一起往前走,这样能够保证相遇节点是环的入口节点(ps:想想为什么)
        ListNode behind = pHead;
        current = pHead;  
        while(nodeSize-->0){                                
            current = current.next;
        }
        while(behind!=current){
            behind = behind.next;
            current = current.next;
        }
        return current;
    }
    
    // 判断是否存在环,若有则返回相遇节点,否则返回null
    private ListNode meetNode(ListNode pHead){
        ListNode slow = pHead;
        ListNode fast = pHead;
        while(fast.next!=null){
            fast = fast.next;
            if(fast==null) return null;
            fast = fast.next;
            if(fast==null) return null;
            if(fast==slow) return fast;
            slow = slow.next;
        }
        return null;
    }
}

相关文章

  • 23、链表中环的入口结点

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

  • 链表中环的入口节点

    《剑指offer》面试题23:链表中环的入口节点 题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则...

  • 剑指offer.C++.code56-60

    56. 链表中环的入口结点 一个链表中包含环,请找出该链表的环的入口结点。 57. 删除链表中重复的结点【基于递归...

  • 链表

    合并排序链表 链表排序 链表中环的入口结点 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出nul...

  • [剑指offer] 链表

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

  • JZ-055-链表中环的入口结点

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

  • 链表中环的入口结点(题号23)

    问题描述:给一个长度为n的链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。数据范围: n≤10...

  • 链表-链表中环的入口结点-java/c++

    链表中环的入口结点 题目描述 一个链表中包含环,请找出该链表的环的入口结点。 思路一: 用map或者set,遍历链...

  • 【链表】链表中环的入口结点

  • 链表中环的入口结点

    题目描述:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路:a、第一步,找环中相汇...

网友评论

      本文标题:23、链表中环的入口结点

      本文链接:https://www.haomeiwen.com/subject/hxmwyctx.html