Skip to content

[LeetCode 203] 移除链表元素

简单已解决 (3次)Aug 14, 2025(15天前) 时间 O(n) 空间 迭代:O(1) & 递归:O(n) 原题链接

🎯 请点击上方原题链接,查看题目描述👆

💭 解题思路#

递归#

方法的作用是移除 Node.val == val 的节点,我们先移除 head.next 中的元素,最后判断头节点是否等于 val,如果等于就返回 head.next,不等于就直接返回head

💻 代码实现

class Solution {
public ListNode removeElements(ListNode head, int val) {
//base case
if(head == null)return head;
head.next = removeElements(head.next,val);
return head.val == val ? head.next : head;
}
}

迭代#

  1. 定义一个节点,将节点指向 head
  2. 定义一个临时的节点 temp,进行遍历。核心就是当 head.next.val == val 的时候。 head.next = head.next.next

💻 代码实现

class Solution {
public ListNode removeElements(ListNode head, int val) {
//定义一个指向head的节点
ListNode res = new ListNode(-1);
res.next = head;
ListNode temp = res;
while(temp.next != null){
if(temp.next.val == val){
temp.next = temp.next.next;
}else{
temp = temp.next;
}
}
return res.next;
}
}