标签:amp 效率 一段 ini 过程 原因 tick 这一 更改
最近在找实习,考的是leetcode的题目,被完虐了,决定狠下心来好好学习,今天要弄懂链表。
首先在面试过程中让手写代码,需要注意的地方,class 后面的__init__函数,不要犯基本的错误,挺丢人的。
好了步入正题,主要参考这篇文章https://mp.weixin.qq.com/s?__biz=MzUyNjQxNjYyMg==&mid=2247484127&idx=1&sn=d681b847e69e3a7fd729e3b480731aa1&chksm=fa0e6d5ecd79e4487f4427433682a9d7dc2d115224c2e3b5b10ca1dd37781f1201013cbd6584&mpshare=1&scene=1&srcid=0906rYLNJqGuqnjz2rP6TfMj&sharer_sharetime=1567750044735&sharer_shareid=681b9acc86a464fe16d7d37df2b991c3&pass_ticket=FwvEAn%2Fe9aWDV2a9bX9IChtPP5aBdf%2F3IX8imiYGHwtYybakfKNUl4HjuIJolhed#rd
链表,他具有动态的能力,不需要处理固定容量的问题,插入删除都会比数组来的简单一点,而麻烦之处就在于,他缺失了高效的随机访问的能力,无法通过索引直接获取对应的元素,在数组中能直接寻找索引的原因是数组开辟的空间在内存中是连续分布的,直接计算出数据所存储的内存地址,用O(1)复杂度可以拿出。
链表需要用next查找,每个节点的存储地址不同。
1、链表的插入
需要注意顺序,先在insert_node后面加上原来的后部节点,再把这一段加在原来的前部节点的后面
2、虚拟的头结点,dummyHead
用关键字new生成 dummyHead=new Node(null,null)
虚拟结点的位置索引可以置为-1
3、链表的删除元素的操作
4、链表的查找元素的操作
5、链表的修改元素的操作
6、一般会用到的:dummyHead 做遍历挂载,一个真正的头结点,一对经常搭配使用,cur遍历,pre前驱
7、还有常见的题目:删除倒数第k个节点,k个或两个有序链表的结合,翻转整个链表
8、一直的困惑解决:创建一个链表时创建的名字不要动,比如创建的是node,之后使得cc=node,这时候cc相当于是node的一个指针,更改他会更改后续的内容,不要直接在创建名上改√
9、遇到链表问题先考虑当前链表为空以及链表的下一个结点是空的情况
10、考虑用递归的方式解决问题,效率更高
标签:amp 效率 一段 ini 过程 原因 tick 这一 更改
原文地址:https://www.cnblogs.com/lin-kid/p/11474563.html