第三天| 203.移除链表元素 707.设计链表 206.反转链表

203.移除链表元素

给定一个链表和一个值,将链表中与值相等的节点删除。

这题是虚拟头结点的经典应用。因为删除头结点和其他节点的方式不同。导致代码不统一。加入一个虚拟头结点后,头结点就和其他节点一样了,就可以用统一的代码处理。

做题时的犯错

1. while语句里,只判断current.next, 而没有判断current。既然要用current.next就必须先判断current。然后检查一下这个语句能否走到尾节点即可。

经验:只要用到current的任何属性,比如current.next和current.val,那就必须先判断current是否存在。同理,用到current.next的任何属性,比如current.next.next和current.next.val,就必须先判断current.next的存在

707.设计链表  

自定义一个链表类。实现获得值,插入头结点,插入尾节点,根据index插入和删除。

注意点:

1. 插入的时候,要先 new_node.next = current.next,然后再 current.next = new_node

2. 不管是插入还是删除。一定是操作current.next的位置。我们用current.next = new_node实现插入,用current.next = current.next.next实现删除

做题时候的困难点

1. 对自定义类不熟悉,多看几遍!多写!

经验:每一个函数,只要做完了,就要return。否则可能会继续无限运行下去。

206.反转链表 

把一个列表翻转。

用prev current两个指针来实现,很直观

递归法也是按照双指针的思路写的。递归函数的输入也是prev current

做题时候的挣扎:

1. 递归法太久没写了。基线条件的时候懂得返回,递归条件的时候没有返回....

以下是卡哥的资料

链表理论基础 

建议:了解一下链接基础,以及链表和数组的区别 

文章链接:https://programmercarl.com/%E9%93%BE%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html

 203.移除链表元素  

建议: 本题最关键是要理解 虚拟头结点的使用技巧,这个对链表题目很重要。

题目链接/文章讲解/视频讲解::https://programmercarl.com/0203.%E7%A7%BB%E9%99%A4%E9%93%BE%E8%A1%A8%E5%85%83%E7%B4%A0.html

 707.设计链表  

建议: 这是一道考察 链表综合操作的题目,不算容易,可以练一练 使用虚拟头结点

题目链接/文章讲解/视频讲解:https://programmercarl.com/0707.%E8%AE%BE%E8%AE%A1%E9%93%BE%E8%A1%A8.html

 206.反转链表 

建议先看我的视频讲解,视频讲解中对 反转链表需要注意的点讲的很清晰了,看完之后大家的疑惑基本都解决了。

题目链接/文章讲解/视频讲解:https://programmercarl.com/0206.%E7%BF%BB%E8%BD%AC%E9%93%BE%E8%A1%A8.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容