【数据结构】链表 linked list

news2024/11/26 12:18:37

一、什么是链表

零散的内存空间存储,由元素和指针组成

二、常用操作

1.原理

access:通过next指针遍历

时间复杂度:O(N)

 search:通过next指针遍历

时间复杂度:O(N)

insert:找个新的内存空间存储新元素,链接回原链表

时间复杂度:O(1)

delete:删除元素,删除指针

时间复杂度:O(1)

2.实现

#创建linkedlist
a=deque()

#添加元素
a.append(1)
a.append(2)
a.append(3)

print(a)
#[1,2,3]

#insert,O(N)
a.insert(2,99)

#access,O(N)
print(a[2])
#99

#update
a[2]=88
print(a)
#[1,2,88,3]

#delete
a.remove(88) #O(N)
del a[2]
print(a)
#[1,2]

#get array size
print(len(a))
#1

#iterate array, O(N)
for i in a:
    print(i) #1
for index, e in enumerate(a):
    print(index,e) #0,1
for i in range(0,len(a)):
    print(i,a[i]) #0,1

#find index
print(a.index(1))
#0

Leetcode练习

1474. 删除链表 M 个节点之后的 N 个节点

给定链表 head 和两个整数 m 和 n. 遍历该链表并按照如下方式删除节点:

  • 开始时以头节点作为当前节点.
  • 保留以当前节点开始的前 m 个节点.
  • 删除接下来的 n 个节点.
  • 重复步骤 2 和 3, 直到到达链表结尾.

在删除了指定结点之后, 返回修改过后的链表的头节点.

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def deleteNodes(self, head, m, n):
        """
        :type head: ListNode
        :type m: int
        :type n: int
        :rtype: ListNode
        """
        if not head: 
            return None
        a = b = head
        c, d = m, n
        while m-1 and a.next:
            a, b = a.next, b.next
            m -=1
        while n and b.next:
            b = b.next
            n-=1
        a.next = self.deleteNodes(b.next, c, d)

        return head

 

总结

读慢写快,适合多写少读操作

其他相关Leetcode习题:203,206

参考:手把手带你刷Leetcode力扣|各个击破数据结构和算法|大厂面试必备技能【已完结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/598626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习HCIP的day.10

十、对BGP一些情况的总结: 1、路由条目不优特殊情况: 在BGP协议中,存在一种无法优秀的路由条目;假设R4路由表中存在一条非BGP产生的到达5.5.5.5的路由条目,且该条目用于R4与R5建立BGP邻居关系;那么之后R5…

【Linux网络】搭建LNMP架构

搭建LNMP架构 一、编译安装MySQL服务二、安装Nginx服务三、安装配置PHP解析环境四、部署Discuz社区论坛Web应用五、部署博客论坛应用六fpm进程优化 一、编译安装MySQL服务 1.安装MySQL环境依赖包 yum -y install gcc gcc-c ncurses ncurses-devel bison cmake2、创建运行用户 u…

地震勘探基础(三)之地震波的时距曲线

时距曲线 在反射波地震勘探中,一般是在地面激发地面接收,激发点到接受点的距离称为炮间距(offset),用 x x x表示。如果炮间距为0,称为自激自收。 单道接收:激发一次只在一个位置上接收地震波。…

在线ps网页版推荐,让你摆脱安装包的烦恼

在设计领域,Photoshop的地位多年来一直是不可动摇的,其强大的功能可以毫不夸张地说:只有你想不到的,没有PS做不到的。但强大如PS,也有自己的小局限性:处理矢量图相对较弱,更难掌握。今天&#x…

微信小程序——监听页面滑动(一)onPageScroll

微信小程序——手把手教你学会监听页面滑动 知识回调(不懂就看这儿!)场景复现核心干货如何进行页面监听了解onPageScroll实际使用onPageScroll 知识回调(不懂就看这儿!) 知识专栏专栏链接微信小程序专栏ht…

栈和队列高频面试题(必刷): 用队列实现栈 用栈实现队列 实现循环队列 括号匹配

文章目录 用队列实现栈用栈实现队列实现循环队列括号匹配 用队列实现栈 题目描述: 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通队列的全部四种操作(push、top、pop 和 empty)。 实现 MySt…

新项目 使用 IDEA 搭建后端环境 及 搭建是可能遇到的 问题 及解决方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 新项目 使用 IDEA 搭建后端环境 及 搭建是可能遇到的 问题 及解决方法 前言 提示:这里可以添加本文要记录的大概内容: 新项目 使用 IDEA 搭建后端环…

【群智能算法改进】一种改进的沙丘猫群优化算法 改进沙丘猫群算法 改进SCSO[2]【Matlab代码#36】

文章目录 【获取资源请见文章第5节:资源获取】1. 原始沙丘猫群优化算法2. 改进沙丘猫群算法2.1 非线性自适应参数2.2 Cauchy变异策略2.3 最优邻域扰动策略 3. 部分代码展示4. 仿真结果展示5. 资源获取6. 参考文献 【获取资源请见文章第5节:资源获取】 1.…

华为OD机试真题B卷 Java 实现【光伏场地建设规划】,附详细解题思路

一、题目描述 祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;整体上常年光照良好,但是也有一些地区光照不太好。某电力公司希望在这里建设多个光伏电站,生产清洁能源。对每平方公里的土…

主动打包、高效管理的主题工具:逐浪HMS主题大师1.5-即速推送、华为小组件缓存优化、锁屏提取、资源审计、技术秘笈,移动主题设计利器

主动打包、高效管理的主题工具:逐浪HMS主题大师1.5-即速推送、华为小组件缓存优化、锁屏提取、资源审计、技术秘笈,移动主题设计利器 主动打包:逐浪HMS主题大师1.3-即速推送、华为小组件缓存优化、锁屏提取、资源审计、技术秘笈,移…

【经验分享】uniapp项目GIT如何忽略unpackage文件

最近的uniapp项目踩了个坑,就是建完项目,提交代码后,运行发布微信小程序,生成了unpackage里的build文件,这个时候提交总是提交一堆编译后的文件,甚至造成冲突。即使在.gitignore文件中写入忽略unpackage目录…

C++ 小区物业管理系统(QT图形界面)

目录 一、项目介绍 二、项目展示 三、源码分享 一、项目介绍 小区物业管理系统 (一)课题内客 该系统要求建立某小区物业管理系绕,并具有排序﹑查找﹒计算﹑显示等功能,通过此课题,熟练掌握文件﹐指针的各种操作,以及一些算法思…

某内Java课程(整套视频+课件)

某内Java课程 需要整套视频文件(视频课件):(V: t_shopnet) 1 FUNDAMENTALO1 01: 对象和类(上)(6 am.mp4 01: 对象和类(上) (6 pm.mp4 02: 对象和类(下) (3) am .mp4 02: 对象和类(下) (3) pm.mp4 引用类型数组、继承的意义 (上) (3) am.mp403…

SOLIDWORKS流程模拟: 需要多少个CPU核心?

客户经常会问,他们应该为SOLIDWORKS Flow Simulation购买什么工作站,以尽可能快地解决他们的计算流体力学(CFD)问题。遗憾的是,这个问题后面往往有一个无法实现的期望,如 "一切都需要在10分钟内解决&q…

十分钟读懂Stable Diffusion运行原理

AIGC 热潮正猛烈地席卷开来,可以说 Stable Diffusion 开源发布把 AI 图像生成提高了全新高度,特别是 ControlNet 和 T2I-Adapter 控制模块的提出进一步提高生成可控性,也在逐渐改变一部分行业的生产模式。惊艳其出色表现,也不禁好…

逆向python窃密软件

python发布的软件包一般逆向方法是,先使用pyinstxtractor获取到关键性pyc文件,再使用pycdc(又叫Decompyle++)将pyc文件反汇编成py源代码文件。 pyinstxtractor使用方法 将反编译的 Python 源打印到标准输出 python pyinstxtractor.py <filename>pycdc使用方法 对照…

BBC Studios 和 Reality+ 联手将节目《疯狂汽车秀》和《异世奇人》带入 The Sandbox 元宇宙

双方将携手在元宇宙推出一系列基于 BBC 世界著名品牌和节目的沉浸式体验。 今天标志着一个 The Sandbox 元宇宙的历史性时刻&#xff01;我们非常高兴地宣布&#xff0c;通过与 BBC Studios 和 web3 专家 Reality 的合作在 The Sandbox 平台带来全新体验&#xff0c;玩家可以与…

Franklin-Reiter相关消息攻击

文章目录 知识导入&#xff1a;题一题目描述&#xff1a;题目分析&#xff1a; 题二题目描述&#xff1a;题目分析&#xff1a; 题三题目描述&#xff1a;题目分析&#xff1a; 收获与体会&#xff1a; 知识导入&#xff1a; 总结&#xff1a; Franklin-Reiter相关消息攻击(Fra…

数据库管理-第七十九期 儿童节惊魂(20230601)

数据库管理 2023-06-01 第七十九期 儿童节惊魂1 主板挂了&#xff1f;2 时间同步3 数据库参数4 ACFS5 两个错误总结 第七十九期 儿童节惊魂 6月第一天&#xff0c;又是儿童节&#xff0c;加上客户现场来了不少娃&#xff0c;也有一些客户家里有娃去参加活动了&#xff0c;所以…

EMC学习笔记(一)PCB电路板层的设置

EMC学习笔记&#xff08;一&#xff09;PCB电路板层的设置 1.概述2.合理的层数2.1 VCC、GND的层数2.2信号层数 3.单板的性能指标与成本要求4.电源层、地层、信号层的相对位置4.1 VCC\GND平面的阻抗以及电源、地之间的EMC环境问题4.2 VCC、GND作为参考平面&#xff0c;两者的作用…