zoukankan      html  css  js  c++  java
  • LeetCode 142. 环形链表 II

    142. 环形链表 II

    题目

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

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

    进阶:

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

    思路

    1)采用 hashset ,返回第一个重复出现的节点

    2) 采用双支针,出现重复之后,慢指针返回到头结点,快指针继续,两者每次都走一步,直到相遇

    代码

    /**
     * Definition for singly-linked list.
     * class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) {
     *         val = x;
     *         next = null;
     *     }
     * }
     */
    public class Solution {
        public ListNode detectCycle(ListNode head) {
                  if (head == null || head.next ==null)
                return null;
    
            ListNode slowIndex = head;
            ListNode fastIndex = head;
    
            while (fastIndex != null && fastIndex.next != null){
                slowIndex =slowIndex.next;
                fastIndex =fastIndex.next.next;
    
                if (slowIndex == fastIndex){
                    slowIndex = head;
    
                    while (slowIndex != fastIndex){
                        slowIndex = slowIndex.next;
                        fastIndex =fastIndex.next;
                    }
                    return slowIndex;
                }
            }
            return null;  
        }
    }
  • 相关阅读:
    jQuery 全选-------左右移动select
    圆饼 折线图的 js
    折线图
    圆饼图
    el 表达式的if else
    list查询出来后存到map里
    spring Mvc 二级联动(3)
    Python之列表
    SAS 中的数据拼接
    Git 安装不是默认路径,生成密钥
  • 原文地址:https://www.cnblogs.com/HuanChen1025/p/8999271.html
Copyright © 2011-2022 走看看