当前位置: 首页 > news >正文

LeetCode -- Linked List Cycle II

题目描述:


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


Note: Do not modify the linked list.


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




判断链表是否有环,如果存在,返回环起始节点;如果不存在,返回Null。


思路:
1. 使用快慢指针的方法找到环的位置。
2. 如果找到了环,慢指针回到起点,快慢指针每次各走一步,下一次相遇的位置就是环的起点。




实现代码:


/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode DetectCycle(ListNode head) 
    {
        if(head == null){
    		return null;
    	}


        var p = head;
    	var q = head;
    	
    	var found = false;
    	while(p != null && q != null && q.next != null && !found){
    		var t = q;
    		p = p.next;
    		q = q.next.next;
    		if(ReferenceEquals(p,q)){
    			found = true;
    		}
    	}
    	
        if(!found){
    		return null;
    	}
    	
    	// p start from head again
    	// and q standing where it is
    	// next time they meet point is where cycle starts from
    	p = head;
    	while(!ReferenceEquals(p, q)){
    		p = p.next;
    		q = q.next;
    	}
    	
    	return q;
    }
}


相关文章:

  • LeetCode -- LRU Cache
  • [Web 开发] 定制IE下载对话框的按钮(打开/保存)
  • LeetCode -- Min Stack
  • SQL2005CLR函数扩展-繁简转换
  • LeetCode -- Minimum Size Subarray Sum
  • LeetCode -- Number of 1 Bits
  • 对象属性拷贝(全匹配拷贝)
  • LeetCode -- Reorder List
  • 最近
  • LeetCode -- Search a 2D Matrix II
  • [IE编程] 打开/关闭IE8的光标浏览模式(Caret Browsing)
  • LeetCode -- 3Sum Closest
  • 使用反射将业务对象绑定到 ASP.NET 窗体控件
  • LeetCode -- 4Sum
  • LeetCode -- Binary Tree Level Order Traversal II
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【mysql】环境安装、服务启动、密码设置
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  •  D - 粉碎叛乱F - 其他起义
  • ECMAScript6(0):ES6简明参考手册
  • ECMAScript入门(七)--Module语法
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JSDuck 与 AngularJS 融合技巧
  • React-Native - 收藏集 - 掘金
  • session共享问题解决方案
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 番外篇1:在Windows环境下安装JDK
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 使用Swoole加速Laravel(正式环境中)
  • 学习使用ExpressJS 4.0中的新Router
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (6)设计一个TimeMap
  • (JS基础)String 类型
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (剑指Offer)面试题34:丑数
  • (转)EXC_BREAKPOINT僵尸错误
  • (转载)Linux网络编程入门
  • .NET CORE Aws S3 使用
  • .Net Core与存储过程(一)
  • .NET 命令行参数包含应用程序路径吗?
  • .net下简单快捷的数值高低位切换
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • /etc/fstab和/etc/mtab的区别
  • @Bean, @Component, @Configuration简析
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [C#]C# winform部署yolov8目标检测的openvino模型