[链表] - 代码随想录 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;
    }
}
相关推荐
yuannl1014 小时前
数据结构----二叉排序树(ai修改版)
数据结构
iiiiyu14 小时前
集合进阶(Map集合)
java·大数据·开发语言·数据结构·编程语言
小江的记录本14 小时前
【Java基础】核心关键字:final、static、volatile、synchronized、transient(附《思维导图》+《面试高频考点清单》)
java·前端·数据结构·后端·ai·面试·ai编程
go不是csgo15 小时前
两个Redis数据结构搞定签到和UV统计:Bitmap与HyperLogLog实战
数据结构·redis·uv
悠仁さん16 小时前
数据结构 栈与队
数据结构
Plan-C-16 小时前
二叉树的遍历
java·数据结构·算法
历程里程碑17 小时前
54 深入解析poll多路复用技术
java·linux·服务器·开发语言·前端·数据结构·c++
一切皆是因缘际会17 小时前
AI Agent落地困局与突破:从技术架构到企业解析
数据结构·人工智能·算法·架构
qeen8717 小时前
【算法笔记】各种常见排序算法详细解析(下)
c语言·数据结构·c++·笔记·学习·算法·排序算法
欢璃18 小时前
笔试强训练习
java·开发语言·jvm·数据结构·算法·贪心算法·动态规划