| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 链表相关算法题(找出两个链表相交的第一个结点,判断链表是否带环,返回链表入环的第一个结点) -> 正文阅读 |
|
[数据结构与算法]链表相关算法题(找出两个链表相交的第一个结点,判断链表是否带环,返回链表入环的第一个结点) |
一、相交链表 1、题目要求 2、解题方法 ? 相交的情况有三种: 首先判断两个链表是否相交,判断方法为找到两个链表的最后一个结点,比较它们是否相等(注意这里比较的是地址),相等的话它们就一定相交。 然后找它们相交的起始结点,方法为定义两个指针,先让两个指针移动到距离相交的起始节点相等的位置,然后让两个指针同时向后移动,直到它们相等(地址相等)。 3、代码
二、判断链表是否有环 1、题目要求 ? ?2、解题方法 使用快慢指针,fast指针每次走两步,slow指针每次走一步,fast指针先进环,slow指针后进环,相对于slow指针来说,fast指针其实是一个结点一个结点的靠近slow的,所以如果成环的话它们一定相交。 3、代码
?三、找链表入环的第一个结点 1、题目要求 ? 2、解题思路 方法一:可以用快慢指针先判断链表是否成环,然后根据快慢指针相交的结点把原链表断开,这样就把它转化成了第一个问题。和第一题差不多,就不写代码了。 方法二:让一个指针从链表起始位置开始遍历链表,同时让一个指针从判环时相遇点的位置开始绕环运行, 两个指针都是每次均走一步,最终肯定会在入口点的位置相遇。 证明: 3、代码 ?
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 12:31:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |