代码随心录第三天|Leecode 203.移除链表元素 707.设计链表 206.反转链表

1、Leecode  203.移除链表元素

题目链接:https://leetcode.cn/problems/remove-linked-list-elements/description/

题目描述:

 

 解题思路:移除操作就是让节点next指针直接指向下下一个节点,因为单链表的特殊性,只能指向下一个节点,所以头节点需要单独考虑,这种方法是直接使用原来的链表来进行删除操作,还有一种不单独考虑头节点——设置一个虚拟头结点在进行删除操作

解法一(单独考虑头节点)

问题:为什么最后函数返回的 head ,是经过调整后的正确链表头指针。

解答:虽然 cur 的改变本身不会直接影响函数外部传入的 head ,但在函数内部,对链表节点的删除操作是围绕 head 所代表的链表结构进行的。当删除节点时,无论是头节点还是非头节点,都通过指针操作(如 cur 的移动及相关指针调整)来重新构建链表结构。当删除完成后,函数内部经过调整的链表头位置,正是 head 当前所指向的位置(若删除了头节点, head 在函数内部已重新指向新的头节点;若未删除头节点, head 指向原头节点且链表结构已完成调整)。最后返回 head ,这个 head 指向的就是经过调整后的正确链表头,能让外部调用函数获取到删除节点后的新链表。

解法二(设置虚拟头结点

 本题视频讲解:https://www.bilibili.com/video/BV18B4y1s7R9/?vd_source=1670197f6caeac56a4d61abf46d4644d

 

2、Leecode  707.设计链表

题目链接:https://leetcode.cn/problems/design-linked-list/description/

题目描述:

 

 

思路:虚拟节点

解答:

 

 

 

3、Leecode  206.反转链表 

题目链接:https://leetcode.cn/problems/reverse-linked-list/description/

题目描述:

 

 思路:双指针法——首先定义一个cur指针,指向头结点,再定义一个pre指针,初始化为null。递归写法也严格按照双指针,当cur为空的时候循环结束,不断将cur指向pre的过程。

 

解法一(双指针)

 
解法二(递归)

 

posted @ 2025-03-29 21:57  米布丁  阅读(1154)  评论(0)    收藏  举报