剑指 Offer 18. 删除链表的节点解题思路

news2025/1/12 4:02:03

文章目录

  • 题目
  • 解题思路

题目

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。

返回删除后的链表的头节点。

注意:此题对比原题有改动

示例 1:

输入: head = [4,5,1,9], val = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

示例 2:

输入: head = [4,5,1,9], val = 1
输出: [4,5,9]
解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.

说明:

题目保证链表中节点的值互不相同
若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点

解题思路

链表的操作,总结一下要考虑的地方:
1.头结点的操作
2.中间节点的操作
3.尾结点的操作
在此题中,操作为删除节点,那么:
1.头结点删除,直接返回第二个节点;
2.中间节点删除,(代码中为下一个节点删除,为方便表示为1,2(该节点),3)需要将1的下一个节点指向3,返回头结点;
3.尾结点删除,代码中在2的逻辑中判断是否存在3,如果不存在3,那么令1指向空,返回头结点。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode DeleteNode(ListNode head, int val) 
    {
        ListNode rawHead = head;
        while(head!=null)
        {
            //头结点
            if(head.val == val)
            {
                return head.next;
            }
            if(head.next != null&& head.next.val == val)
            {
                //中间节点
                if(head.next.next!=null)
                head.next = head.next.next;
                else
                {
                    //尾结点
                    head.next = null;
                }
                return rawHead;
            }
            head = head.next;
        }
        return null;
    }
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/602052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows程序设计 学习笔记 第九章 子窗口控件

目录: 文章目录 一,按钮类1.创建子窗口拓展1——获取对话框字符尺寸的方法拓展2——获取实例句柄的方法2.子窗口传递消息给父窗口3.父窗口传递信息给子窗口拓展3 窗口句柄与ID 的相互获取① 已知窗口句柄 获取 ID②已知子窗口ID 获取 子窗口句柄 4. 按钮…

仙境传说RO怎样创建一个NPC rAthena脚本语言的hello word

仙境传说RO怎样创建一个NPC rAthena脚本语言的hello word 大家好,我是艾西。上一篇文章中我们有教大家怎么编译仙境传说RO服务端和客户端,当我们自己可以搭建架设游戏时,那么这个游戏在某种意义上就是我们说的算了。比如增加一些特色功能等&…

数据隐私为先:EMQX Cloud BYOC 架构解析

随着物联网的飞速发展,保护数据隐私和安全变得愈发重要。构建一个安全、可靠、可扩展的物联网基础设施成为企业的首要任务。 EMQ 近期推出了 EMQX Cloud BYOC,采用了以数据隐私为先的架构,为解决这些问题提供了一个理想的方案。用户可以在自…

JavaEE-Servlet的使用

目录 显示 HttpServletRequest 的常用属性获取GET请求中的query string 的内容获取 POST 请求中 body 的内容实现自动刷新构造重定向页面 显示 HttpServletRequest 的常用属性 能够返回一个页面, 显示以下内容: URL方法版本号query stringcontext path所有的 header import …

Shell脚本攻略:通配符、正则表达式

目录 一、理论 1.通配符 2.正则表达式 二、实验 1.通配符 2.正则表达式 一、理论 1.通配符 (1)概念 通配符只用于匹配文件名、目录名等,不能用于匹配文件内容,而且是已存在的文件或者目录。 各个版本的shell都有通配符&…

MySQL遇到的问题

注意:当前遇到问题都是MySQL5.7.33版本和Windows10的系统,MySQL服务的名称是MySQL57,以下出现的MySQL57只是我的MySQL服务名称,要根据自己的MySQL服务的名称来 可以通过“服务”,找到自己的MySQL服务名称,…

SpringBoot测试——高级配置

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ SpringBoot测试——高级配置 一、SpringBoot加…

电容器基础原理知识

电容器基础知识 电容器是一种储能元件,在电路中用于调谐、滤波、耦合、旁路、能量转换和延时。电容器通常叫做电容。按其结构可分为固定电容器、半可变电容器、可变电容器三种。 常用电容的结构和特点 常用的电容器按其介质材料可分为电解电容器、云母电容器、瓷介…

什么是RabbitMQ?

RabbitMQ是一个由erlang开发的消息队列。消息队列用于应用间的异步协作。 2.RabbitMQ的组件 Message:由消息头和消息体组成。消息体是不透明的,而消息头则由一系列的可选属性组成,这些属性包括routing-key、priority、delivery-mode&#xff…

ChatGPT与软件架构(2) - 基于Obsidian和GPT实现解决方案架构自动化

磨刀不误砍柴工,良好的工具可以有效提高效率。本文介绍基于Obsidian和GPT打造架构知识库的思路,为架构师提供整理、分享、原文: Solution Architecture Automation With Obsidian and GPT Stas Parechyn Unsplash 本文介绍的ArchVault是一个旨在帮助架构…

【100个 Unity实用技能】 | Unity 的 LOD技术(多细节层次)

🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 &…

vue3+ts+echarts5基本地图下钻~

依靠本地json文件实现省市下钻&#xff0c;有后台的可以改成服务&#xff0c;样式没有&#xff0c;vue3tsecharts5&#xff0c;一定要设宽高 html&#xff1a; <div click"back">返回</div> <div id"echartsMap" style"width: 58%; h…

【Azure】微软 Azure 基础解析(七)Azure 网络服务中的虚拟网络 VNet、网关、负载均衡器 Load Balancer

本系列博文还在更新中&#xff0c;收录在专栏&#xff1a;「Azure探秘&#xff1a;构建云计算世界」 专栏中。 本系列文章列表如下&#xff1a; 【Azure】微软 Azure 基础解析&#xff08;三&#xff09;描述云计算运营中的 CapEx 与 OpEx&#xff0c;如何区分 CapEx 与 OpEx…

入职字节跳动那一天,我哭了(蘑菇街被裁,奋战7个月拿下offer)

前言 先说一下自己的个人情况&#xff0c;20届应届生&#xff0c;通过校招进入到了蘑菇街&#xff0c;然后一待就待了差不多2年多的时间&#xff0c;可惜的是去年8月份受疫情影响遇到了大裁员&#xff0c;而我也是其中一员。好在之前一直想去字节跳动&#xff0c;年尾就已经在…

wlanapi.dll丢失怎么办?分享多种wlanapi.dll丢失的解决方法

Wlanapi.dll是Windows中的一个重要文件&#xff0c;它是无线局域网API的一部分&#xff0c;负责提供和管理无线网络连接的功能。如果出现wlanapi.dll丢失的情况&#xff0c;会导致无法连接到无线网络&#xff0c;影响电脑的正常使用。下面我们来看看wlanapi.dll丢失怎么办&…

在linux服务器中对R语言中for循环设置多核运行

1 问题 在R中构建了for循环&#xff0c;由于循环过多&#xff0c;运行速度过慢&#xff0c;且不同循环之间是并行关系&#xff0c;拟通过多核运行可以解决此问题。 2 代码设置 2.1 shell脚本中的设置 b.sh export OPENBLAS_NUM_THREADS8Rscript ./..._1.R \2.2 R代码中的设…

程序员必备的10张流程图

随着互联网的发展&#xff0c;现在有越来越多的人想成为程序员。 如果你想成为程序员你可以先问自己这几个问题&#xff1f; •你是一个逻辑和抽象思维能力比较强的人吗&#xff1f; •你是否愿意不断地去学习那些新的东西&#xff0c;并且在大多数时间内你都需要去自学。 …

Midway.js探索与实践

您好&#xff0c;如果喜欢我的文章&#xff0c;可以关注我的公众号「量子前端」&#xff0c;将不定期关注推送前端好文~ 前言 我司的技术基建在Midway之上&#xff0c;主要是面向中后台前后端一体化方案&#xff0c;大白话就是全栈应用解决方案&#xff0c;什么是Midway呢&am…

freeswitch的gateway配置方案优化

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 在之前的文章中&#xff0c;我们简单介绍过gateway的三种配置方案&#xff0c;但是实际应用之后发现&#xff0c;方案中的参数设置有缺陷&#xff0c;会导致一些问题。 本文档中&#xff0c;针对具体的gateway配置问题…

linux第六七天 which find进程等

ctrlF5 //强制刷新 which ifconfig //找到ifconfig的路径 发现在/usr/sbin/ifconfig 目录下 然后 cp /usr/sbin/ifconfig /root/bin/ipconfig 就相当于自己设置了ifconfig的另外一种命令 多个条件可以使用-a(-o)连接&#xff0c;表示而且&#xff08;或者&#xff09…