代码随想录算法训练营|链表理论基础 203.移除链表元素 707.设计链表 206.反转链表

链表理论基础

建议:了解链表和数组的区别

文章链接: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

思路:
这道题一开始我想到的是在原链表上操作,也想到了在头节点和非头节点删除的不同,但是没写出来,看完题解了解到利用虚拟头节点可以统一在任意位置删除插入的操作。

问题:
没有给指针赋值,报错

image.png

https://blog.katastros.com/a?ID=01650-078cdfb6-7113-4fee-911d-5cb22b1e60b7

收获:
虚拟头节点的使用

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

收获:
这道题的是用两个指针pre和cur实现转向,关键是在对当前节点转向之前,要先保存它的next位置,不然转向之后就找不到了,在利用刚保存的位置对当前节点进行更新。熟练掌握双指针的写法,根据双指针可以写出递归,递归的关键在于什么时候结束递归,也就是边界条件是什么,以及递归的参数如何赋值。

你可能感兴趣的:(代码随想录算法训练营|链表理论基础 203.移除链表元素 707.设计链表 206.反转链表)