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

面试金典题2.3

若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。

假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。

例如,传入节点 c(位于单向链表 a->b->c->d->e->f 中),将其删除后,剩余链表为 a->b->d->e->f

示例:

输入:节点 5 (位于单向链表 4->5->1->9 中)
输出:不返回任何数据,从链表中删除传入的节点 5,使链表变为 4->1->9

这道题的方法很简单,只要清楚链表的储存方式就可以。已知给出的中间节点为node,那么我们想要删除这个节点,只需要将这个节点的值变为下一个节点的值,我们就得到了两个值相同的节点,然后我们将下下个节点指向需要删除节点的下一个节点,就完成删除了。实际上是删除了中间节点的下一个节点,但是因为我们因为将下一个节点的值赋给中间节点,因此,我们可以直接删除中间节点的下一个节点。这样说可能不太清楚,其实我们把我们要删除的节点定义为当前节点,那么我们就可以直接让当前节点的前驱节点指向后继节点就实现了删除。类比到这个题里,当前节点并不是题目中给出的中间节点,而是它的下一个节点,因此我们先将中间节点的值变为下一个节点的值,再删除下一个节点,那么实际看到的结果就是删除了中间节点。

leetcode代码

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:void deleteNode(ListNode* node) {node->val=node->next->val;node->next=node->next->next;}
};

其实我一开始没有注意到这个题是直接给出要删除的节点,我以为的中间节点是要自己找的。理解错题意了。那么如果要找真正意义上的中间节点该怎么做呢?请往下看

其实找中间节点,主要是看数的总数为偶数的情况,到底是选择靠前的那个节点还是靠后的节点,而思路和上一个找倒数第k个节点的题类似,都是使用双指针去找,同样将两个指针先指向头节点,而中间节点就是在1/2的位置,那么我们只要让两个指针的移动速度为两倍差,但是如果数的个数为偶数的话,那么找到的节点就是靠后的那个节点。

leetcode代码

class Solution {
public:ListNode* middleNode(ListNode* head) {if(head==nullptr&&head->next==nullptr){return head;}ListNode *p = head;ListNode *q = head;while(p != nullptr && q->next != nullptr) {q = q->next;p = p->next->next;}return q;} 
};

那么如果我们要找到的是靠前的那个节点呢?

class Solution {  
public:  ListNode* middleNode(ListNode* head) {  if (head == nullptr || head->next == nullptr) {  // 如果链表为空或只有一个节点,则直接返回头节点  return head;  }  ListNode *p = head;  ListNode *q = head;  while (p->next != nullptr && p->next->next != nullptr) {  // p 每次移动两步,直到 p->next 或 p->next->next 为空  p = p->next->next;  // q 每次移动一步  q = q->next;  }  // 当 p 无法再安全地前进两步时(即 p->next 或 p->next->next 为空),q 指向“靠前的”中间节点  return q;  }  
};

相关文章:

面试金典题2.3

若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。 假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。 例如,传入节点 c(位于单向链…...

React 知识框架

在学习 React 时,可以按照以下知识框架来逐步学习和掌握 React 相关的知识: 1. **基础概念**: - 了解什么是 React 和为什么要使用 React。 - 理解 Virtual DOM(虚拟 DOM)的概念以及它如何提高性能。 - 学习…...

DeepCross模型实现推荐算法

1. 项目简介 A032-DeepCross项目是一个基于深度学习的推荐算法实现,旨在解决个性化推荐问题。随着互联网平台上信息和内容的爆炸式增长,用户面临着信息过载的困境,如何为用户提供高效、精准的推荐成为了关键。该项目背景基于现代推荐系统的发…...

【力扣】2376. 统计特殊整数

如果一个正整数每一个数位都是 互不相同 的,我们称它是 特殊整数 。 给你一个 正 整数 n ,请你返回区间 [1, n] 之间特殊整数的数目。 示例 1: 输入:n 20 输出:19 解释:1 到 20 之间所有整数除了 11 以外都…...

MySQL面试题——第一篇

1. 一张自增表里面总共有7条数据,删除了最后2条数据,重启数据库后又插入了一条数据,此时ID是几 表类型如果是MyISAM,那么id就是8 如果是InnoDB,那就是6 InnoDB表只会把自增主键的最大id记录在内存中,所以重…...

零停机部署的“秘密武器”:为什么 Kamal Proxy 能成为你架构中的不二之选?

你是不是也遇到过这种场景:网站正在升级,用户却被迫刷新无数次页面?服务器切换时瞬间掉线,客户体验差得没话说。更糟糕的是,流量高峰期来临时,正是业务最重要的时刻,结果因为停机而损失惨重。这个时候你一定会想:难道没有一种方式,能在不打断服务的情况下,平滑地进行…...

轻量级RSS阅读器Fusion

什么是 Fusion ? Fusion 是一款轻量级、自托管的 RSS 聚合器和阅读器。 软件主要特点: 自动分组、书签、搜索、嗅探信息导入/导出 OPML 文件支持 RSS、Atom、JSON 类型的 feed响应式、明/暗模式、PWA轻量级,自托管友好 使用 Golang 和 SQLit…...

Kubernetes从零到精通(11-CNI网络插件)

Kubernetes网络模型 Kubernetes的网络模型(Kubernetes Networking Model)旨在提供跨所有节点、Pod和服务的统一网络连接。它的核心理念是通过统一的网络通信规则,保证集群中的所有组件能够顺畅地相互通信。Kubernetes网络模型主要有以下几个关…...

【手机马达共振导致后主摄马达声音异常】

手机马达共振导致后主摄马达声音异常 问题根因解决方案其他易混淆 问题根因 当手机马达的震动频率和摄像头AF马达的一二阶震动频率处于共振频段的时候,手机马达震动时候有很大概率会干扰到后置摄像头的对焦马达正常工作,可能出现的影响有出现滋滋杂音&a…...

AUTOSAR UDS NRC

UDS NRC NRC 含义如表格所示 NRC代码描述含义0x00Ok没有错误,请求已成功执行0x01~0x0FISOSAEReservedISO 保留,暂时未定义0x10General reject服务请求被拒绝,原因不明确0x11Service not supported请求的服务不被支持0x12Sub-function not supported请求的子功能不被支持0x13…...

[数据结构]无头单向非循环链表的实现与应用

文章目录 一、引言二、线性表的基本概念1、线性表是什么2、链表与顺序表的区别3、无头单向非循环链表 三、无头单向非循环链表的实现1、结构体定义2、初始化3、销毁4、显示5、增删查改 四、分析无头单向非循环链表1、存储方式2、优点3、缺点 五、总结1、练习题2、源代码 一、引…...

认识结构体

目录 一.结构体类型的声明 1.结构的声明 2.定义结构体变量 3.结构体变量初始化 4.结构体的特殊声明 二.结构体对齐(重点难点) 1.结构体对齐规则 2.结构体对齐练习 (一)简单结构体对齐 (二)嵌套结构体对齐 3.为什么存在内存对齐 4.修改默认对齐数 三.结构体传参 1…...

Linux驱动.之MT7601,USB-WiFi网卡移植到X210开发板,wpa_supplicant配置工具的使用(一)

一、移植前 1、下载与解压无线网卡MT7601U驱动源码压缩包 DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2 解压后有如下文件 ate common iwpriv_usage.txt Makefile mgmt phy README_STA_usb RT2870STA.dat sta_ate_iwpriv_usage.txt chips include m…...

ChatGPT 在国内使用的方法

AI如今很强大,聊聊天、写论文、搞翻译、写代码、写文案、审合同等等,ChatGPT 真是无所不能~ 作为一款出色的大语言模型,ChatGPT 实现了人类般的对话交流,最主要是能根据上下文进行互动。 接下来,我将介绍 ChatGPT 在国…...

思通数科开源产品:免费的AI视频监控卫士安装指南

准备运行环境: 确保您的服务器或计算机安装了Ubuntu 18.04 LTS操作系统。 按照产品要求,安装以下软件: - Python 3.9 - Java JDK 1.8 - MySQL 5.5 - Redis 2.7 - Elasticsearch 8.14 - FFmpeg 4.1.1 - RabbitMQ 3.13.2 - Minio (…...

阿里HPN-用于大型语言模型训练的数据中心网络

阿里巴巴HPN:用于大型语言模型训练的数据中心网络 探索大规模语言模型训练新方法:阿里巴巴HPN数据中心网络论文。 摘要 本文介绍了阿里云用于大型语言模型(LLM)训练的数据中心网络HPN。由于LLM和一般云计算之间的差异(例如,在流量模式和容错性方面)&…...

re题(27)BUUFCTF-[MRCTF2020]Transform

BUUCTF在线评测 (buuoj.cn) 先到ida,先看一下字符串 找到主函数 int __cdecl main(int argc, const char **argv, const char **envp) {char Str[104]; // [rsp20h] [rbp-70h] BYREFint j; // [rsp88h] [rbp-8h]int i; // [rsp8Ch] [rbp-4h]sub_402230(argc, argv…...

偶数、奇数、整数与指数

引言 在前面的课程中,我们已经学习了 Python 的基本输入输出、数据类型及其转换、顺序结构、分支结构、循环结构、循环控制语句、字符串类型、列表类型、元组类型、字典类型、集合类型、函数的定义与使用、函数调用与作用域、函数的高级应用、质数、倍数与余数。本课…...

关于c#中异步async和await的理解

之前给大家介绍了所谓异步编程的用法,但是没有细致的理解到,今天想和大家一起探讨一下; 前文: C#笔记14 异步编程Async,await,task类-CSDN博客 异步的起初 应用程序会启动一个进程,一个进程可以有很多…...

mysql等保数据库命令

mysql数据库命令 默认安装位置:C:\Program Files\MySQL\MySQL Server 8.0\bin select version() from dual; desc mysql.user; 查看表中有哪些列 1、SELECT user, host, authentication_string, account_locked ,password_lifetime FROM mysql.user; 查询用户表…...

毕业论文格式反复返工?paperxie 智能排版教你一键通过导师审核

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/format/typesettinghttps://www.paperxie.cn/format/typesetting 作为毕业季最耗时耗力的 “机械劳动”,论文格式调整往往比正文写作更磨人。字号、行距、页眉页…...

如何解决黑苹果USB端口识别问题:USBInjectAll内核扩展完整指南

如何解决黑苹果USB端口识别问题:USBInjectAll内核扩展完整指南 【免费下载链接】OS-X-USB-Inject-All Kext to inject all USB ports for the installed Intel EHCI/XHCI chipset automatically. 项目地址: https://gitcode.com/gh_mirrors/os/OS-X-USB-Inject-Al…...

Spring Boot Actuator生产级监控与管理工具包

Spring Boot Actuator 是 Spring Boot 提供的生产级监控与管理工具包,帮你把应用“可观测化”。它提供了一系列内置的端点(Endpoint),用来查看应用的内部状态,比如健康情况、配置信息、内存指标等。你可以把它理解成为…...

【机器学习】神经网络学习手册(四)损失函数

损失函数 Loss Function 用来衡量模型“错的有多离谱” 损失函数 模型预测值 vs 真实标签之间的差距 训练目标:找到一组权重,让损失函数的值最小化 - 损失越大 预测越差,需要优化 - 损失越小 预测越好,接近目标 常见的损失函数…...

JMeter分布式压测实战:突破单机瓶颈的原理与落地

1. 为什么单台JMeter跑不动你的压测任务?你是不是也遇到过这样的场景:在本地用JMeter跑一个5000并发的HTTP请求,CPU直接飙到98%,内存告急,响应时间曲线像心电图一样乱跳,结果还没导出,JMeter自己…...

深度学习工程化实战:从论文思想到可部署代码的七步法

1. 项目概述:这不是一份“论文清单”,而是一份深度学习演进的实操路线图你有没有过这种感觉:打开一篇讲“深度学习里程碑论文”的文章,满屏都是《AlexNet》《ResNet》《Transformer》这些名字,配着几句“开创性”“革命…...

别再手动打包了!用Jenkins Pipeline + Docker + Gitee自动化部署Spring Boot项目(附完整Jenkinsfile)

Jenkins Pipeline实战:从代码提交到容器化部署的全自动化实践 对于Java开发者而言,每次代码变更后的打包、测试、构建镜像和部署流程往往需要耗费大量重复时间。我曾在一个中型项目中统计过,团队每月平均执行这类手动操作超过200次&#xff0…...

保姆级教程:用Ansys Zemax从零设计一个汽车HUD(附挡风玻璃反射优化技巧)

从零开始用Ansys Zemax设计汽车HUD:避坑指南与实战技巧 在汽车智能化浪潮中,抬头显示系统(HUD)正从高端车型的选配逐渐成为主流配置。对于光学工程师而言,掌握HUD设计能力已成为职业发展的关键技能。本文将带你从零开始…...

香橙派Zero3无屏幕配网新玩法:用ESP32-C3蓝牙模块搞定WiFi连接(附完整代码)

香橙派Zero3无屏幕配网新玩法:用ESP32-C3蓝牙模块搞定WiFi连接(附完整代码) 在物联网和边缘计算项目中,无头设备(Headless Device)的网络配置一直是个棘手问题。想象一下:你刚拿到一块香橙派Zer…...

无监督聚类挖掘声音语义:从音乐描述文本发现认知规律

1. 这不是传统聚类,而是一场对“声音语言”的考古式挖掘你有没有试过听一首歌,然后被某段音色击中——那种“像融化的玻璃糖纸裹着雨滴坠落”的感觉?或者在音乐评论区刷到“低频像沉入深海的青铜钟”“人声有未拆封的羊皮纸质感”这类描述&am…...