Leetcode --- 203. 移除链表元素

题目描述

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

示例 1:

 示例

输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
输入:head = [7,7,7,7], val = 7
输出:[]

参考实现

方式1、使用递归实现 

复制代码
    /**
     * 递归实现删除链表元素
     *
     * @param head
     * @param val
     * @return
     */
    public static ListNode removeElements(ListNode head, int val) {
        if (head == null) {
            return null;
        } else {
            head.next = removeElements(head.next, val);
            if (head.val == val) {
                return head.next;
            } else {
                return head;
            }
        }
    }
复制代码

方式2、使用循环实现 

复制代码
    /**
     * 循环删除链表元素
     *
     * @param head
     * @param val
     * @return
     */
    public static ListNode removeElementsxh(ListNode head, int val) {
        //声明虚拟节点
        ListNode dummy = new ListNode(val - 1);
        dummy.next = head;
        //复制出来
        ListNode prev = dummy;
        while (prev.next != null) {
            //满足删除条件进行删除
            if (prev.next.val == val) {
                prev.next = prev.next.next;
            } else {
                //不满足进行遍历
                prev = prev.next;
            }
        }
        return dummy.next;
    }
复制代码

 

posted @   晓枫的春天  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
历史上的今天:
2023-05-07 类的成员:方法(method)(三)
2022-05-07 CentOS7 修改环境变量后导致命令失效
2020-05-07 Jedis 连接 Redis
点击右上角即可分享
微信分享提示