算法训练营第三天链表理论基础 203.移除链表元素 707.设计链表 206.反转链表

链表理论基础

Definition:

什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。

链表的入口节点称为链表的头结点也就是head。

Types:

单链表;双链表;循环链表

203.移除链表元素

很简单的练习题 主要是 熟悉listnode 在java里的创建

java语法里只有node.next 没有node->next(C,C++)

这个题没问题就是忘记了处理头节点

看了代码随想录 有三种做法:

最基本的删除

1.先去除头节点(因为可能是 [7,7,7,7]这种 所以要 用while)然后再找一遍val

2.添加头节点

3.多射一个 pre node,每次移动 cur node pre node都需要移动。(这样很方便处理 cur null问题)

这个题开始以为很简单,就没怎么用心。但其实里面有很多小问题,比如头节点的处理,然后以及cur是null和cur_next是null的处理

需要铭记!!!得保证cur不是null!!

707.设计链表

开始写错了,写错的地方在于 addIndex时没考虑 当index可以加到list之后,也就是index可以=nums !!!

然后 deleteIndex没考虑 delete后 nail也需要更新的情况!!!

使用head 和 nail一定要注意 更新!!

206.反转链表

初想法:

可以用一个可变数组存储一下 ArrayList<Integer> list = new ArrayList<>();

看完代码随想录:

初想法很笨,完全不用再建一个新的链表。只用在原基础上 反转指针方向就好.

代码随想录说这是双指针法,想了想确实是 我每次也是东 pre 和 cur。但自己做完 也没想到这就是双指针!看来要多做 多想

还可以用递归:

全部评论

相关推荐

白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
投了多少份简历才上岸
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
07-02 10:44
门头沟学院 C++
码农索隆:太实诚了,告诉hr,你能实习至少6个月
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务