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

【java】链表:找到成环的起始节点

分析:

        定义快慢双指针,在上一篇博客中,分析过若有环,快慢指针一定会相遇。

        在这里,想要找到成环的起始节点,我们在快慢指针相遇的时候,让其中一个指针回到开始结点,然后两个指针一步一步走 ,再次相遇时那个节点就是起始节点。

(星星的位置是假定两指针相遇的位置) 

求解:x=(n-1)(y+z)+z

public int cirCle() {
	    	Node fast =head;
	    	Node slow=head;
	    	while((fast!=null)&&(fast.next!=null)) {
	    		fast=fast.next.next;
	    		slow=slow.next;
	    		if(fast==slow) {
	    			fast=head;
	    			while(fast!=slow) {
	    				fast=fast.next;
	    				slow=slow.next;
	    			}
	    			return slow.data;
	    		}
	    		
	    	}
	    	return -1;
	    }


http://www.kler.cn/a/398866.html

相关文章:

  • 树的直径计算:算法详解与实现
  • torch.stack 张量维度的变化
  • 平台整合是网络安全成功的关键
  • spring-cache concurrentHashMap 自定义过期时间
  • 爬虫——JSON数据处理
  • Python常用魔术方法 (学习笔记)
  • git,ssh免密公钥配置,gitee为例,GitHub,gitlab同理
  • uniapp如何i18n国际化
  • 【flutter】flutter2升级到3.
  • 【Go 开发】pprof 排查问题流程:排查程序 CPU 占用高的问题
  • 跨平台WPF框架Avalonia教程 五
  • 【Java豆瓣电影爬虫】——抓取电影详情和电影短评数据 -
  • Gin 框架中间件详细介绍
  • 解析煤矿一张图
  • 【专题】计算机网络之网络层
  • c ++零基础可视化——数组
  • C++中的桥接模式
  • 为什么要使用Ansible实现Linux管理自动化?
  • uniapp微信小程序接入airkiss插件进行WIFI配网
  • ODOO学习笔记(7):模块化架构(按需安装)
  • 基于Java Springboot宠物救助管理系统
  • jQuery UI 为什么使用部件库
  • 4.2 Android NDK 基础概念
  • 深入理解 Redis跳跃表 Skip List 原理|图解查询、插入
  • 使用 OpenAI 提高 Appium 测试脚本效率:从优化到跨平台支持
  • 人工智能之图像预处理、数据库、GUI布局的综合应用(数据库部分、GUI布局设计)