[LeetCode] Remove LinkedList Elements

news/2024/7/3 8:41:01 标签: 数据结构与算法

Problem

Remove all elements from a linked list of integers that have value val.

Example

Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5

Note

链表基本的删除操作,最好掌握以下三种方法。

Solution

Dummy Node

public class Solution {
    public ListNode removeElements(ListNode head, int val) {
        if (head == null) return null;
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        ListNode pre = dummy, cur = head;
        while (cur != null) {
            if (cur.val == val) pre.next = cur.next;
            else pre = pre.next;
            cur = cur.next;
        }
        return dummy.next;
    }
}

Recursion

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

Iteration

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

http://www.niftyadmin.cn/n/1749065.html

相关文章

突破运营商 QoS 封锁,WireGuard 真有“一套”!

❝原文链接🔗:https://icloudnative.io/posts/wireguard-over-tcp-using-phantun/或者点击左下角的 阅读原文 直接查看原文👇👉WireGuard 作为一个更先进、更现代的 VPN 协议,比起传统的 IPSec、OpenVPN 等实现&#x…

Openfiler配置基于文件系统的网络存储

一、Openfiler简介 Openfiler是一个操作系统,其提供基于文件的网络附加存储和基于块的存储区域网络功能。 Openfiler支持的网络协议包括:NFS,SMB/CIFS,HTTP/WebDAV,FTP和iSCSI。 Openfiler支持的网络目录包括&#xff…

使用 Grafana Mimir 实现云原生监控报警可视化

❝本文转自掘金,原文:https://juejin.cn/post/7151673227943608350,版权归原作者所有。欢迎投稿,投稿请添加微信好友:cloud-native-yang云原生报警背景现状在云原生的生态下,kubernetes 已经被越来越多地应…

Linux mount/unmount命令

开机自动挂载 如果我们想实现开机自动挂载某设备,只要修改/etc/fstab文件即可。 文件挂载的配置文件:/etc/fstab 查看此文件可知 每行定义一个要挂载的文件系统; 其每行的格式如下 要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项…

linux里挂载(mount)和取消挂载(umount)命令的使用

一、简单用法 $ mount /dev/hda2 /home 第一个叁数是与包括文件系统的磁盘或分区相关的设备文件。 第二个叁数是要mount到的目录。 $ umount /dev/hda2 $ umount /usr 参数可以是设备文件或安装点。 二、mount详细介绍 如果想在运行的Linux下访问其它文件系统中的资源的话&…

OGG配置文档(详细)

1 GoldenGate简要说明 GoldenGate现在是业内成熟的数据容灾与复制产品,经过多年的发展与完善,现在已经成为业内事实上的标准之一。 GoldenGate软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的…

使用 Golang 玩转 Bridge 与 NetNamespace 互联

❝本文转自掘金,原文:https://juejin.cn/post/7074894564879761416,版权归原作者所有。欢迎投稿,投稿请添加微信好友:cloud-native-yang❝前置知识:希望您对 Linux Namespace 有所了解,以及一些…

Java基础第十四天总结

package com.client0601;import java.nio.charset.Charset;public class App {public static void main(String[] args) {for(String key:Charset.availableCharsets().keySet()){System.out.println(key);}System.out.println(Charset.defaultCharset());}}缓冲字节流&#xf…