一、203.移除链表元素题目描述
203.移除链表元素的链接如下所示,您可复制下面链接网址进入力扣学习,看题解之前一定要先做一遍哦!
https://leetcode.cn/problems/remove-linked-list-elements/description/https://leetcode.cn/problems/remove-linked-list-elements/description/
给你一个链表的头节点 head
和一个整数 val
,请你删除链表中所有满足 Node.val == val
的节点,并返回 新的头节点 。
示例 1:
输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]
示例 2:
输入:head = [], val = 1 输出:[]
示例 3:
输入:head = [7,7,7,7], val = 7 输出:[]
提示:
- 列表中的节点数目在范围
[0, 104]
内 1 <= Node.val <= 50
0 <= val <= 50
二、Java版的示例代码
这题可直接用单链表的算法来实现,具体代码如下:
class Solution {public ListNode removeElements(ListNode head, int val) {while(head!=null&&head.val==val){head=head.next;}ListNode curr=head;while(curr!=null){while(curr.next!=null&&curr.next.val==val){curr.next=curr.next.next;}curr=curr.next;}return head;}
}
三、具体思路
本题主要讲解单链表的算法思路,下面为本题思路的3个步骤:
- 首先判断要删除的元素是否是头节点,还要判断头结点不为空。如果这个头结点为空,相当于是操作空指针,那么编译就会报错。同时头节点所指向的数值等于目标值。然后把头结点指向这个头节点的下一个。
- 定义一个指针curr,让它指向head。然后进入while循环,判断curr和curr.next不为空,curr.next的值等于val,让curr.next指向curr.next.next。
- 最后别忘了不等于的情况,我们就让curr指向curr.next。然后返回head。
最后,感谢各位读者的阅读与支持,您的支持是我前进的动力!我希望我的博文能够带给您有用的算法知识和启发。希望本题对大家有帮助,谢谢各位读者的支持!!!