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;  
        }
    }
  • 相关阅读:
    架构探险笔记3-搭建轻量级Java web框架
    软件工程
    Mysql基础
    Navicat快捷键
    百度搜索的使用技巧
    利用adb截图然后传到电脑
    Div不用float布局
    安卓开发之ScrollView
    安卓开发ScrollView嵌套ListView只显示一行
    修改eclipse的背景色(转载)
  • 原文地址:https://www.cnblogs.com/HuanChen1025/p/8999271.html
Copyright © 2011-2022 走看看