leetcode142
public class Solution {
    public ListNode detectCycle( ListNode head ) {
        if( head == null || head.next == null ){
            return null;
        }
        // 快指针fp和慢指针sp,
        ListNode fp = head, sp = head;
        while( fp != null && fp.next != null){
            sp = sp.next;
            fp = fp.next.next;
            //此处应该用fp == sp ,而不能用fp.equals(sp) 因为链表为1 2 的时候容易
            //抛出异常
            if( fp == sp ){  //说明有环
                break;
            }
        }
        //System.out.println( fp.val + "   "+ sp.val );
        if( fp == null || fp.next == null ){
            return null;
        }
        //说明有环,求环的起始节点
        sp = head;
        while( fp != sp ){
            sp = sp.next;
            fp = fp.next;
        }
        return sp;
    }
}
补充一个python的实现:
class Solution:
def detectCycle(self, head: ListNode) -> ListNode:
if head == None or head.next == None:
return None
slow,fast = head,head
while fast != None and fast.next != None:
slow = slow.next
fast = fast.next.next
if slow == fast:
break
if fast == None or fast.next == None:
return None
slow = head
while slow != fast:
slow = slow.next
fast = fast.next
return slow
leetcode142的更多相关文章
- 【算法训练营day4】LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表II
		
[算法训练营day4]LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表 ...
 - [Swift]LeetCode142. 环形链表 II | Linked List Cycle II
		
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note ...
 - LeetCode142:Linked List Cycle II
		
题目: Given a linked list, return the node where the cycle begins. If there is no cycle, return null. ...
 - Leetcode142 环形链表
		
很多题解没有讲清楚非环部分的长度与相遇点到环起点那部分环之间为何是相等的这个数学关系.这里我就补充下为何他们是相等的.假设非环部分的长度是x,从环起点到相遇点的长度是y.环的长度是c.现在走的慢的那个 ...
 - Leetcode142. Linked List Cycle II环形链表2
		
给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 说明:不允许修改给定的链表. 进阶: 你是否可以不用额外空间解决此题? 方法一:使用map 方法二: 分两个步骤,首先通 ...
 - LeetCode141 Linked List Cycle. LeetCode142 Linked List Cycle II
		
链表相关题 141. Linked List Cycle Given a linked list, determine if it has a cycle in it. Follow up:Can y ...
 - leetcode142 Linked List Cycle II
		
""" Given a linked list, return the node where the cycle begins. If there is no cycle ...
 - LeetCode142 环形链表 II
		
给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 说明:不允许修改给定的链表. 进阶:你是否可以不用额外空间解决此题? //章节 - 链表 //二.双指针技巧 //2.环 ...
 - LeetCode 142
		
Linked List Cycle II Given a linked list, return the node where the cycle begins. If there is no cyc ...
 
随机推荐
- SVN创建分支/合并分支/切换分支
			
在建立项目版本库时,可首先建好项目文件夹,并在其中建立trunk, branches, tags三个空的子目录.这样在trunk中开始进行开发 trunk是主分支,是日常开发进行的地方. branch ...
 - 解决Fiddler查看Post参数中文乱码的问题
			
解决Fiddler查看Post参数中文乱码的问题 解决方法: 1.win+R 2.打开注册表编辑器:输入regedit +回车+是 3.HKEY_CURRENT_USER\Software\Micro ...
 - python实现算术表达式的词法语法语义分析(编译原理应用)
			
本学期编译原理的一个大作业,我的选题是算术表达式的词法语法语义分析,当时由于学得比较渣,只用了递归下降的方法进行了分析. 首先,用户输入算术表达式,其中算术表达式可以包含基本运算符,括号,数字,以及用 ...
 - 关于attibutedText输出中文字符后的英文和数字进行分开解析的问题
			
上面的图应该很清楚 具体这个attibutedText 是做什么的就不说了 ,最初我查了资料发现有人和我一样的输出,把一个字符串的中英文分开打印出来是iOS关于UItextVIew和UIlabel的差 ...
 - linux 创建sudo账号.md
			
内容来源自网络 方案一 root登录 ssh root@server_ip_address 新增用户 adduser username 设置密码 passwd username 输入两次密码 修改帐户 ...
 - Python全栈之路----函数进阶----迭代器
			
我们已经知道,可以直接作用于 for 循环的数据类型有以下几种: 一类是集合数据类型,如 list , tuple , dict , set ,str 等: 一类是 generator ,包括生成器和 ...
 - alpha冲刺(2/10)
			
前言 队名:旅法师 作业链接 队长博客 燃尽图 会议 会议照片 会议内容 陈晓彬(组长) 今日进展: 召开会议 安排任务 博客撰写 构建之法的阅读 问题困扰: 分配任务,还是不熟练,对后台不熟悉,不知 ...
 - 寒假作业pta3
			
某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X).捕鼠夹可重复利 ...
 - 2018-2019-2 20165212《网络对抗技术》Exp2 后门原理与实践
			
2018-2019-2 20165212<网络对抗技术>Exp2 后门原理与实践 1.实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作 ...
 - Python基础:一、编程语言分类
			
编程语言主要从以下几个角度进行分类: 编译型和解释型 静态语言和动态语言 强类型语言和弱类型语言 编译型语言和解释型语言 编译和解释的区别是什么? 编译器是把源程序的每一条语句都编译成机器语言,并保存 ...