博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单链表中有环II
阅读量:6847 次
发布时间:2019-06-26

本文共 1038 字,大约阅读时间需要 3 分钟。

hot3.png

原题

  Given a linked list, return the node where the cycle begins. If there is no cycle, return null.

  Follow up:
  Can you solve it without using extra space?

题目大意

  给定一个单链表,如果它有环,返回环入口的第一个节点,否则返回null

解题思路

  先判断链表是否有环,使用快(fast)慢指针(slow),解法见,如果没有环就返回null,如果有环,有fast=slow,就让让slow重新指向链表头,然后两个指针每次同时移动一个位置,直到两链表相遇,相遇点就是环的入口结点。

代码实现

结点类

class ListNode {    int val;    ListNode next;    ListNode(int x) {        val = x;        next = null;    }}

 

实现类

public class Solution {    public ListNode detectCycle(ListNode head) {        ListNode fast = head;        ListNode slow = head;        while (fast != null && fast.next != null) {            fast = fast.next.next;            slow = slow.next;            if (fast == slow) {                break;            }        }        if (fast == null || fast.next == null) {            return null;        }        slow = head;        while (fast != slow) {            fast = fast.next;            slow = slow.next;        }        return slow;    }}

转载于:https://my.oschina.net/u/2822116/blog/810602

你可能感兴趣的文章
Java8中的LocalDateTime工具类
查看>>
Exchange 2013 PowerShell创建自定义对象
查看>>
RAID-10 阵列的创建(软)
查看>>
javaScript的调试(四)
查看>>
nginx不使用正则表达式匹配
查看>>
dell台式机双SATA硬盘开机提示NO boot device available- Strike F1 to retryboot .F2
查看>>
linux下mysql的卸载、安装全过程
查看>>
samba不需密碼的分享
查看>>
利用putty进行vnc + ssh tunneling登录
查看>>
js重定向---实现页面跳转的几种方式
查看>>
hadoop1.x作业提交过程分析(源码分析第二篇)
查看>>
默认安装vsftpd后
查看>>
极速理解设计模式系列:14.轻量级模式(Flyweight Pattern)
查看>>
深度有趣 | 12 一起来动动手
查看>>
相关算法排序安排
查看>>
css的bug:
查看>>
《Redis设计与实现》读书笔记
查看>>
waiting for changelog lock.
查看>>
小白学爬虫-批量部署Splash负载集群
查看>>
你离BAT之间,只差这一套Java面试题
查看>>