| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 牛客网面试必刷TOP101之——带环链表 -> 正文阅读 |
|
[数据结构与算法]牛客网面试必刷TOP101之——带环链表 |
前言
牛客必刷题?链表,别名链式存储结构或单链表,用于存储逻辑关系为 “一对一” 的数据。与顺序表不同,链表不限制数据的物理存储状态,换句话说,使用链表存储的数据元素,其物理存储位置是随机的。 📚下面来刷几个链表题练练手 1. 判断链表中是否有环题目: 方法一: 使用快慢指针
C++解题代码: 本着“Talk is cheap. Show me the code”的原则,直接上代码:
时间复杂度:假设fast超前slow d 个节点,环周长 C,则需要 C-d 步 fast才能追上 slow。需要的总步数为 n-d。时间复杂度为 O ( n ) O(n) O(n)。 空间复杂度:只需维护fast与slow,空间复杂度为 O ( 1 ) O(1) O(1)。
一个链表从头节点开始一个个删除,所谓删除就是让他的next指针指向他自己。如果没有环,从头结点一个个删除,最后肯定会删完,如下图所示 参考图片 C++解题代码:
空间复杂度:程序只需维护fast与slow,空间复杂度为 O ( 1 ) O(1) O(1)。 2. 链表中环的入口结点题目: 示例: 利用上一题的方法二,当上题程序确认程序有环时,head指针刚好走到环的入口处,所以当走到入口时直接返回节点即可得解: C++解题代码:
空间复杂度:程序只需维护fast与slow,空间复杂度为 O ( 1 ) O(1) O(1)。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年12日历 | -2024/12/28 18:50:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |