解题思路


移除链表元素的本质:

将前一个节点的 next 指向当前节点的 next

啊哈哈哈哈,幻灯片来喽,使用方法 【点击幻灯片后可以使用键盘上下键↕控制】

动图版:

实现代码


class Solution {
    public ListNode removeElements(ListNode head, int val) {
        if (head == null) return null;
        head.next = removeElements(head.next, val);
        if (head.val == val) return head.next;
        else return head;
    }
}

复杂度分析


  • 时间复杂度:O(n)

    • 也算遍历了长度n的节点

  • 空间复杂度:O(1)

    • 没有额外创建变量等消耗空间