[链表] - 代码随想录 203. 移除链表元素

链表 - 代码随想录 203. 移除链表元素

题目描述:

删除链表中所有值为 val 的节点。

示例:

输入: 1 -> 2 -> 6 -> 3 -> 4 -> 5 -> 6, val = 6

输出: 1 -> 2 -> 3 -> 4 -> 5

题解思路:

为了方便处理头节点可能被删除的情况,我们通常会创建一个虚拟头节点(dummy node),然后从该节点开始遍历链表。在遍历过程中,如果当前节点的下一个节点的值等于目标值 val,则跳过该节点;否则,继续向后移动。

Java 实现:

java 复制代码
/**
 * 定义单链表节点
 */
class ListNode {
    int val;
    ListNode next;
    ListNode() {}
    ListNode(int val) { this.val = val; }
    ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        // 创建虚拟头节点
        ListNode dummy = new ListNode(0, head);
        ListNode cur = dummy;

        while (cur != null && cur.next != null) {
            if (cur.next.val == val) {
                // 如果下一个节点的值等于 val,则跳过该节点
                cur.next = cur.next.next;
            } else {
                // 否则,移动到下一个节点
                cur = cur.next;
            }
        }

        // 返回虚拟头节点的下一个节点,即为新的链表头
        return dummy.next;
    }
}
相关推荐
洛水水22 分钟前
【力扣100题】76.搜索插入位置
数据结构·算法·leetcode
满怀冰雪37 分钟前
第07篇-差分算法-高效处理区间修改问题
数据结构·算法
FuckPatience2 小时前
C# 链表元素的引用地址分析
链表·c#
先吃饱再说2 小时前
JavaScript栈和队列:从“冰柜里的雪糕”到“排队打饭”
javascript·数据结构
papership2 小时前
入门级-数据结构-2、简单树:二叉树的遍历(前序、中序、后序)
数据结构·算法
WWW65262 小时前
代码随想录 打卡第五十四天
数据结构·c++·算法
happymaker06262 小时前
LeetCodeHot100——15.三数之和
数据结构·算法
J2虾虾2 小时前
C 语言 sizeof 完全用法指南
c语言·数据结构·算法
一切皆是因缘际会3 小时前
因果推理人工智能
大数据·数据结构·人工智能
洛水水3 小时前
【力扣100题】78.在排序数组中查找元素的第一个和最后一个位置
数据结构·算法·leetcode