王道2-2-24

题目大意

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

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

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

思路

  1. 快慢两个指针,fast走两步,slow走一步,如果相遇就是有环
  2. 假设head与入幻点相差a,入环与slow差b,fast比slow多走a+b(2倍关系),若slow再走a会到入幻点(因为入幻与slow差b),而且head走a也是入幻点,所以如果a=slow,那么就是入幻点

代码实现

//快慢指针,若相遇择优换
        ListNode *fast=head,*slow=head;
        int flag=0;
        while(slow&&fast->next){
            //fast走两次,所以需要检查fast的下一个
            slow=slow->next;
            fast=fast->next->next;
            if(fast==slow){
                flag=1;
                break;
            }
        }
        if(flag){
            ListNode *p=head;
            while(p!=slow){
                p=p->next;
                slow=slow->next;
            }
            return p;
        }else{
            return nullptr;
        }

热门文章

暂无图片
编程学习 ·

mysql8 windows版密码忘记如何重新设置?

本机安装位置:D:\Program Files (x86)\java\mysql-8.0.13-winx64重设密码具体过程:还好有一个navicat的连接可以打开,查看其中的用户名和主机名称(一般默认是这个,改了又忘了的话我也没办法了)打开cmd,用管理员的身份运行,先关闭mysql(net stop mysql);然后进入mysql8所…
暂无图片
编程学习 ·

springcloud config 配置访问

springcloud http请求地址和资源文件映射如下: / { 应用名 } / { 环境名 } [ / { 分支名 } ] / { 应用名 } - { 环境名 }.yml / { 应用名 } - { 环境名 }.properties / { 分支名 } / { 应用名 } - { 环境名 }.yml / { 分支名 } / { 应用名 } - { 环境名 }.properties label 分支…
暂无图片
编程学习 ·

C++对象析构之后再访问

在对象被析构之后,仍然可以通过该对象的指针访问相应的静态方法以及没有被static关键字修饰,但是没有访问非静态成员变量的方法)。如果访问了静态成员变量,则会根据不同的编译器得到不同的结果,可能是预期之外的值,可能是直接段错误。如果方法A调用了方法B,并且方法A和B…
暂无图片
编程学习 ·

通过组键扫描使得Spring管理类的对象

通过组件扫描使得Spring管理类的对象。 如果User类需要使用Spring框架管理,必须声明User类所在的包,然后再用测试类中的AnnotationConfigApplicationContext的构造方法中将包名作为参数():import org.springframework.context.annotation.AnnotationConfigApplicationContex…
暂无图片
编程学习 ·

java实现的通用遗传算法框架

这两天写了一个比较通用的遗传算法框架common-geneticalgorithm,之所以写这个是因为以前每次需要用到遗传算法的时候总是手写一遍,从开始写代码起到现在估计至少写了不下20次了,像matlab,python,js,go,java的版本都写过。 主要思路是将重复的代码部分,像选择算子,精英保留,…
暂无图片
编程学习 ·

SQL存储过程

什么是存储过程,如何创建一个存储过程 * Stored Procedure * 存储过程=SQL语句+流控制语句定义存储过程定义 create procedure 存储过程名称(【参数列表】) begin 需要执行的语句 end. 创建CREATE PROCEDURE `get_hero_scores`( OUT max_max_hp FLOAT, OUT min_max_mp FLO…
暂无图片
编程学习 ·

力扣-算法练习(Python)

9.回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例1: 输入: 121 输出: true 示例2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例3: 输入: 10 输出: fal…
暂无图片
编程学习 ·

Centos7中iptables防火墙的设置

防火墙的种类:包过滤防火墙 代理防火墙 状态检测技术通信原理: 一台客户端>iptables>服务器 数据包---》iptables把数据包分类进行处理(各种表rew,mangle,nat,filter表等)-- -》 filter:允许,不允许通过数据包。 nat:进行数据转换的数据包。 mangle:对数据包做…
暂无图片
编程学习 ·

防静电塑料包装

■ 简介防静电袋可以最大程度地保护静电敏感元器件免受潜在静电危害,它们独特的法拉第电笼构造形成“感应罩”效应,以达到对袋内物品的屏蔽和防静电功效,外层耐磨金属涂层和内层乙烯材料,经复杂工艺处理对静电屏蔽保护做到尽善尽美,半透明热封袋型的工艺,可清楚辨认袋内的…
暂无图片
编程学习 ·

java.lang.UnsupportedOperationException异常处理

今天写代码的时候遇到的,原因是因为使用Arrays.asList()将数组转为list之后,想调用add方法增加元素时的异常,后来查了资料才发现猫腻 在Arrays中有一个方法Arrays.asList(),这个平常我们都用作数组转List的,但是这个方法转出来的List是无法进行add/remove操作的,原因是由…
暂无图片
编程学习 ·

程序媛审美测评——控制台256种颜色搭配及控制台改变界面颜色的方法

改变控制台颜色的方法+程序媛审美色调推荐前言改变颜色der方法程序媛颜色审美测评初筛42种搭配复试4种出挑 前言 C语言小学期做大作业,感觉黑底白字略显单调,想换个颜色change一下枯燥的程序(然并卵)。对,前景和背景色各16种,笔者挨个测过去,一共测了256次。在此过程中,…
暂无图片
编程学习 ·

.NET中解决ajax跨域问题

一行代码解决:HttpContext.Response.AppendHeader(“Access-Control-Allow-Origin”,"*"); 然后,该怎么返回数据怎么返回数据
暂无图片
编程学习 ·

为什么使用Google搜索的时候会连接不到服务器?

为什么使用Google搜索的时候会连接不到服务器?DNS缓存投毒说明方法PS DNS缓存投毒 说明 在未使用付业成设计的DNSCrypt(一种网络协议,用来抵御针对DNS的DNS缓存投毒攻击)之前,使用代理访问google一直打不开,原因就在于一般系统默认会从ISP提供的域名查询服务器查询海外服…
暂无图片
编程学习 ·

QT布局与信息和槽

实训第一天知识记录QT编码出现问题解决写代码出问题怎么办计算器编码的问题以及记录三种写法Hello World及注意事项布局的代码实现下一篇 信号,槽,以及connect()方法 QT编码出现问题解决 方法一: 找到工具栏——选项——kits 方法二: 项目中的构建目录 方法三: 右击清楚…
暂无图片
编程学习 ·

wx.DateTime.ParseDate(‘yesterday‘)往前倒退一天

用wxpython写了个小程序,打开程序后要把工作日期往前倒退一天,看wx.DateTime的说明时,发现这个控件有强大的自动分析功能。官方原文如下:The date formatting and parsing functions convert wx.DateTime objects to and from text. The conversions to text are mostly tr…
暂无图片
编程学习 ·

URI URL URN 的区别

URIUniform Resource Identifier,是一个紧凑的字符串用来标示抽象或物理资源。 包括URL与URNURLUniform Resource Locator,是URI的子集,除了确定一个资源,还提供一种定位该资源的主要访问机制(如其网络“位置”)。 eg: http://www.ietf.org/rfc/rfc2396.txt 让URI能成为URL的…
暂无图片
编程学习 ·

RocketMQ Remoting模块系列之NettyRemotingServer源码浅析

写在前面RocketMQ Remoting模块也是整个代码中比较简单的一个模块,在掌握基本的Netty知识之后就可以尝试对源码进行简单的阅读分析,我也是结合源码分析来进行Netty应用的学习。该模块主要有两个类 NettyRemotingServer 和 NettyRemotingClient 。分别对应服务端和客户端,服务…