当前位置: 首页 > article >正文

LeetCode 203:根据值删除节点

题目:
在这里插入图片描述

方式一:
在这里插入图片描述
在这里插入图片描述
方法二:
在这里插入图片描述
代码示例:

package com.zy.leetcode.LeetCode_203;

/**
 * @Author: zy
 * @Date: 2024-12-25-11:49
 * @Description:
 * 根据值删除节点
 */
public class ListNode_203 {

    int val;
    ListNode_203 next;

    ListNode_203(int val) {
        this.val = val;
        this.next = null;
    }

    public ListNode_203(int val, ListNode_203 next) {
        this.val = val;
        this.next = next;
    }

    public ListNode_203() {

    }

    public ListNode_203 removeVal(ListNode_203 o1, int target) {
        ListNode_203 s = new ListNode_203(-1, o1);
        ListNode_203 p1 = s;
        ListNode_203 p2 = s.next;

        while (p2 != null) {
            if (p2.val == target) {
                //删除,p2向后平移
                p1.next = p2.next;
            } else {
                p1 = p1.next;
            }
            p2 = p2.next;
        }
        //返回头节点,不返回
        return s.next;

    }

    public ListNode_203 removeValChange(ListNode_203 o1, int target) {
        ListNode_203 s = new ListNode_203(-1, o1);
        ListNode_203 p1 = s;
        ListNode_203 p2;

        while ((p2 = p1.next) != null) {
            if (p2.val == target) {
                //删除,p2向后平移
                p1.next = p2.next;
            } else {
                p1 = p1.next;
            }
            //p2 = p2.next;
        }
        //返回头节点,不返回
        return s.next;

    }

    /**
     * 递归
     * @param o1
     * @param target
     * @return
     */
    public ListNode_203 removeVal2(ListNode_203 o1, int target) {
        if (o1 == null) {
            return null;
        }

        if (o1.val == target) {
            //如果相等,则返回后续节点递归结果
            return removeVal2(o1.next, target);
        } else {
            //如果不相等,则返回后续节点,并更新当前节点所指向的下一节点
            o1.next = removeVal2(o1.next, target);
            return o1;
        }

    }

    // Helper method to print the linked list
    private static void printLinkedList(ListNode_203 head) {
        ListNode_203 current = head;
        while (current != null) {
            System.out.print(current.val + " ");
            current = current.next;
        }
        System.out.println(); // For a new line after printing the list
    }

    // Helper method to create a linked list from an array of values
    private static ListNode_203 createLinkedList(int[] values) {
        if (values.length == 0) {
            return null;
        }

        ListNode_203 head = new ListNode_203(values[0]);
        ListNode_203 current = head;

        for (int i = 1; i < values.length; i++) {
            current.next = new ListNode_203(values[i]);
            current = current.next;
        }

        return head;
    }

    public static void main(String[] args) {
        int[] values1 = {2, 2, 3, 4, 2, 5, 6};
        int[] values2 = {1, 2, 6, 3, 6};
        int[] values3 = {7, 7, 7, 7, 7};
        ListNode_203 head1 = createLinkedList(values1);
        printLinkedList(head1);

        ListNode_203 head2 = createLinkedList(values2);
        printLinkedList(head2);

        ListNode_203 head3 = createLinkedList(values3);
        printLinkedList(head3);

        System.out.println("\n-------------");
        ListNode_203 listNode1 = new ListNode_203().removeVal(head1, 2);
        ListNode_203 listNode12 = new ListNode_203().removeValChange(head1, 2);
        ListNode_203 listNode13 = new ListNode_203().removeVal2(head1, 2);
        printLinkedList(listNode1);
        printLinkedList(listNode12);
        printLinkedList(listNode13);

        System.out.println("\n-------------");
        ListNode_203 listNode2 = new ListNode_203().removeVal(head2, 6);
        printLinkedList(listNode2);

        System.out.println("\n-------------");
        ListNode_203 listNode3 = new ListNode_203().removeVal(head3, 7);
        printLinkedList(listNode3);

    }
}


http://www.kler.cn/a/458442.html

相关文章:

  • 如何在 API 设计中做到接口幂等
  • LinuxC高级day4
  • 基于傅立叶神经网络(FNN)与物理信息神经网络(PINN)求解泊松方程(附Pytorch源代码)
  • vulhub-wordpress靶场
  • 深入浅出梯度下降与反向传播
  • TCP-UDP调试工具推荐:Socket通信测试教程(附详细图解)
  • HDLBits训练6
  • Java爬虫实战:获取亚马逊商品详情
  • 五.Springboot通过AOP实现API接口的签名验证
  • Go IO之文件处理,TCPUDP讲解
  • CF2043b-B. Digits
  • ASP.NET Core Web API Hangfire
  • C# OpenCV机器视觉:漫水填充
  • 春招快速准备和是否考研建议
  • 深度学习实战102-基于深度学习的网络入侵检测系统,利用各种AI模型和pytorch框架实现网络入侵检测
  • STM32高级 以太网通讯案例1:网络搭建(register代码)
  • leetcode 面试经典 150 题:删除有序数组中的重复项
  • 基于SSM的“一汽租车辆共享平台”的设计与实现(源码+数据库+文档+PPT)
  • vue-复制剪贴板
  • pytorch整体环境打包安装到另一台电脑上
  • 高级技巧-使用Mysql 实现根据条件过滤整个分组数据
  • 正则化强度的倒数C——让模型学习更准确
  • Bash 脚本教程
  • 【Python】什么是元组(Tuple)?
  • TCP/IP原理
  • OpenCV-Python实战(4)——图像处理基础知识