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