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

Leetcode-每日一题【剑指 Offer 18. 删除链表的节点】

题目

 

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

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

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

示例 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.首先我们需要定义一个虚拟头节点,为了方便的删除头节点。让头节点dummy的next指向head。然后我们处理特殊情况判断链表是否为null,若链表为 null,我们直接返回 null。之后我们设置一个指针 temp 去遍历链表,若 temp.next.val != val 我们就让 temp = temp.next ,这么做是为了让 temp 找到目标节点的前一个节点,方便我们进行删除操作。当找到目标节点后我们就让  temp.next = temp.next.next ,删除目标节点,最后返回 dummy.next即可。

代码实现

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

测试结果

http://www.lryc.cn/news/117570.html

相关文章:

  • [LINUX使用] top 命令的使用
  • 通过redis进行缓存分页,通过SCAN扫描进行缓存更新
  • C#小轮子 Debug,Release,发布模式如何运行不同的代码
  • 【【萌新的STM32 学习-6】】
  • “深入解析JVM:探索Java虚拟机的工作原理“
  • 【目标检测系列】YOLOV2解读
  • 【深入浅出程序设计竞赛(基础篇)第一章 算法小白从0开始】
  • openGauss学习笔记-36 openGauss 高级数据管理-TRUNCATE TABLE语句
  • ChatGPT生成文本检测器算法挑战大赛
  • O2OA开发平台实施入门指南
  • 服装行业多模态算法个性化产品定制方案 | 京东云技术团队
  • MySQL表空间结构与页、区、段的定义
  • RaabitMQ(三) - RabbitMQ队列类型、死信消息与死信队列、懒队列、集群模式、MQ常见消息问题
  • Unity3D GPU Selector/Picker
  • 灰度非线性变换之c++实现(qt + 不调包)
  • 轻量级Web框架Flask
  • 【gridsample】地平线如何支持gridsample算子
  • JPA实现存储实体类型信息
  • 阿里云快速部署开发环境 (Apache + Mysql8.0+Redis7.0.x)
  • 语音秘书:让录音转文字识别软件成为你的智能工作助手
  • 【腾讯云 Cloud Studio 实战训练营】用于编写、运行和调试代码的云 IDE泰裤辣
  • [C#] 简单的俄罗斯方块实现
  • postman官网下载安装登录详细教程
  • (贪心) 剑指 Offer 14- I. 剪绳子 ——【Leetcode每日一题】
  • 如何将Linux上的cpolar内网穿透设置成 - > 开机自启动
  • 50.两数之和(力扣)
  • k8s基础
  • 【自然语言处理】大模型高效微调:PEFT 使用案例
  • FFmpeg将编码后数据保存成mp4
  • 设置VsCode 将打开的多个文件分行(栏)排列,实现全部显示