zoukankan      html  css  js  c++  java
  • LeetCode 142. 环形链表 II(Linked List Cycle II)

    142. 环形链表 II
    142. Linked List Cycle II

    题目描述
    给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回 null。

    为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。

    说明: 不允许修改给定的链表。

    LeetCode142. Linked List Cycle II

    示例 1:

    输入: head = [3,2,0,-4], pos = 1 输出: tail connects to node index 1 解释: 链表中有一个环,其尾部连接到第二个节点。

    示例 2:

    输入: head = [1,2], pos = 0 输出: tail connects to node index 0 解释: 链表中有一个环,其尾部连接到第一个节点。

    示例 3:

    输入: head = [1], pos = -1 输出: no cycle 解释: 链表中没有环。

    进阶:
    你是否可以不用额外空间解决此题?

    Java 实现
    ListNode Class

    class ListNode {
    	int val;
    	ListNode next;
    
    	ListNode(int x) {
    		val = x;
    		next = null;
    	}
    }
    
    public class Solution {
    	public ListNode detectCycle(ListNode head) {
    		ListNode fast = head, slow = head;
    		while (fast != null && fast.next != null) {
    			fast = fast.next.next;
    			slow = slow.next;
    			if (slow == fast) {
    				fast = head;
    				while (fast != slow) {
    					fast = fast.next;
    					slow = slow.next;
    				}
    				return slow;
    			}
    		}
    		return null;
    	}
    }
    

    相似题目

    参考资料

  • 相关阅读:
    上机练习3
    上机练习2
    上机练习1
    第一次作业
    第二次作业
    第一次作业
    第二次作业(4)
    第二次作业(3)
    第二次作业(2)
    第二次作业(1)
  • 原文地址:https://www.cnblogs.com/hgnulb/p/10905344.html
Copyright © 2011-2022 走看看