**203.移除链表元素 **
leetcode链接:https://leetcode.cn/problems/remove-linked-list-elements/
题目描述:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
核心思路:对链表删除的掌握程度。可以直接删除,需要考虑目标是否在头节点。或者创建虚拟头节点来解决,更为简洁。
普通方法:分别对头节点以及非头节点进行删除
点击查看代码
class Solution {
public:ListNode* removeElements(ListNode* head, int val) {while(head!=NULL && head->val==val){ListNode* tmp = head;head = head->next;delete tmp;}ListNode* cur = head;while(cur!=NULL && cur->next!=NULL){if(cur->next->val == val){ListNode* tmp = cur->next;cur->next = cur->next->next;delete tmp;}else cur = cur->next;}return head;}
};
点击查看代码
class Solution {
public:ListNode* removeElements(ListNode* head, int val) {ListNode* dummyhead = new ListNode(0);dummyhead->next = head;//创建的虚拟节点要指向头节点ListNode* cur = dummyhead;//从头节点开始遍历while(cur->next!=NULL){if(cur->next->val==val){ListNode* tmp = cur->next;cur->next = cur->next->next;delete tmp;//删除的节点需要释放掉}else{cur = cur->next;}}head = dummyhead->next;delete dummyhead;//将虚拟头节点删除return head;}
};
点击查看代码
class MyLinkedList {
public:struct LinkedNode{int val;LinkedNode* next;LinkedNode(int x): val(x), next(nullptr){}};MyLinkedList() {dummyhead = new LinkedNode(0);size = 0;}int get(int index) {if(index > size-1 || index < 0){return -1;}LinkedNode* cur = dummyhead->next;while(index--){cur = cur->next;}return cur->val;}void addAtHead(int val) {LinkedNode* newNode = new LinkedNode(val);newNode->next = dummyhead->next;dummyhead->next = newNode;size++;}void addAtTail(int val) {LinkedNode* newNode = new LinkedNode(val);LinkedNode* cur = dummyhead;while(cur->next != nullptr){cur = cur->next;}cur->next = newNode;size++;}void addAtIndex(int index, int val) {LinkedNode* cur = dummyhead;LinkedNode* newNode = new LinkedNode(val);if(index < 0)index = 0;if(index > size)return ;while(index--){cur = cur->next;}newNode->next = cur->next;cur->next = newNode;size++;}void deleteAtIndex(int index) {LinkedNode* cur = dummyhead;if(index < 0 || index >= size)return ;while(index--){cur = cur->next;}LinkedNode* tmp = cur->next;cur->next = cur->next->next;delete tmp;tmp = nullptr;size--;}private:int size = 0;LinkedNode* dummyhead;
};
点击查看代码
class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode* cur = head;ListNode* pre = nullptr;while(cur){ListNode* tmp = cur->next;//局部变量,无需手动删除cur->next = pre;pre = cur;cur = tmp;}return pre;}
};
递归法:主要要注意调用递归传入的值
点击查看代码
class Solution {
public:ListNode* reverse(ListNode* cur,ListNode* pre){if(cur==NULL)return pre;//先判断cur是否为空,防止后续出现空指针ListNode* tmp = cur->next;cur->next = pre;return reverse(tmp,cur);//注意这里传入的值};ListNode* reverseList(ListNode* head) {return reverse(head,NULL);}
};
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/974270.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
2025-07-21-Mon-T-RocketMQ
1. 核心功能
1.1 MQ介绍
RocketMQ基本组件Topic: 消息归类的基本单元
Queue: 消息队列
Producer
Consumer
ConsumerGroup:
NameServer:可以理解为注册中心,负责更新和发现Broker
Broker集群:Broker 可以有一个或…
2025-07-13-Sun-T-AI-LangChain4j
1. 认识AI
1.1 神经元介绍
黑马LangChain4j入门到实战项目: 项目地址
软件架构
前端:静态页面后端框架:SpringbootLangchain4j + Ollama持久化:本地文件存储对话记录 (resources/memory)
用户预约信息存储在内存(…
P24_现有网络模型的使用及修改
P24_现有网络模型的使用及修改24.1 VGG16网络模型:
(1)打开pytorch(0.9.0)—torchvision.models—VGG(2)参数点击查看代码
pretrained (bool) – If True, returns a model pre-trained on ImageNet
progress (bo…
20232403 2025-2026-1 《网络与系统攻防技术》实验六实验报告
1.实验内容
主要内容:使用ARP扫描和nmap进行主机发现与端口扫描、Vsftpd后门漏洞获得root权限、Samba命令注入漏洞获取系统访问、Java RMI反序列化漏洞建立Meterpreter会话、PHP CGI参数注入漏洞。
掌握Metasploit命令…
第二讲类神经网络训练不起来
第二讲类神经网络训练不起来
一.优化失败的原因梯度为0有可能是local minima 和saddle point
因为计算优化的终止条件是梯度为0,但有可能梯度为0仅是局部最小值local minima或鞍点saddle point(多维,在某些维度是最…
【计算机网络】深入浅出DNS:网络世界的地址簿与导航系统 - 教程
【计算机网络】深入浅出DNS:网络世界的地址簿与导航系统 - 教程2025-11-23 21:39
tlnshuju
阅读(0)
评论(0) 收藏
举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !imp…
2025-01-24-Fri-T-如何做一个开源项目
创建和维护一个开源项目是一个非常有意义的工作,它可以帮助你与全球开发者合作,同时建立个人或团队的影响力。以下是详细步骤,帮你从零开始创建一个成功的开源项目。
1. 确定项目目标
解决实际问题:选择一个对你或…
利用大语言模型分析技术支持诈骗Facebook群组的网络犯罪研究
本文介绍了一项利用大语言模型分析Facebook上技术支持诈骗群组的研究,涉及38万条帖子的分类分析,揭示了网络犯罪服务的运作模式和最新趋势。网络犯罪与刑罚:我们在APWG eCrimes会议上关于技术支持诈骗Facebook群组的…
2025-05-29-Thu-T-设计模式
目录1. 设计模式相关内容介绍1.1 设计模式概述1.2 UML类图类的表示方式类之间的关系表示方法1.3 软件设计原则1.1 开闭原则1.2 里氏代换原则1.3 依赖倒转/依赖倒置原则1.4 接口隔离原则1.5 迪米特法则1.6 合成复用原则…
2025-05-27-Tue-T-JVM
目录1 JVM与Java体系结构1.1 JVM 结构简图1.2 Java代码执行流程1.3 JVM的架构模型1.4 JVM的生命周期一、内存结构1. 程序计数器2. 虚拟机栈2.1 定义2.2 栈内存溢出2.3 线程运行诊断3. 本地方法栈4. 堆4.1 定义4.2 堆内…
20232421 2025-2026-1 《网络与系统攻防技术》实验六实验报告
1.实践内容前期渗透主机发现
端口扫描
选做:也可以扫系统版本、漏洞等。Vsftpd源码包后门漏洞(21端口)
SambaMS-RPC Shell命令注入漏洞(139端口)
Java RMI SERVER命令执行漏洞(1099端口)
PHP CGI参数执行注入漏…
20232315 2025-2026-1 《网络与系统攻防技术》实验六实验报告
20232315 2025-2026-1 《网络与系统攻防技术》实验六实验报告20232315 2025-2026-1 《网络与系统攻防技术》实验六实验报告
目录一、实验基本信息二、实验内容及要求三、实验过程3.1 前期渗透3.2 漏洞利用四、问题及解…
[CISCN 2022 华东北]duck WP
[CISCN 2022 华东北]duck WP[CISCN 2022 华东北]duck
一、题目来源
NSSCTF-Pwn-[CISCN 2022 华东北]duck二、信息搜集
通过 file 命令查看文件类型:通过 checksec 命令查看文件开启的保护机制:题目把 libc 文件和链接…
20232320 2025-2026-1 《网络与系统攻防技术》实验六实验报告
1.实验内容
总结一下本周学习内容,不要复制粘贴
2.实验过程
(1)前期渗透
①主机发现(可用Aux中的arp_sweep,search一下就可以use)
②端口扫描:可以直接用nmap,也可以用Aux中的portscan/tcp等。
③选做:也可以…
2025-01-14-Tue-T-实体关系图ERD
实体关系图(ERD)指南
什么是实体关系图(ERD)?
数据库是软件系统中不可或缺的一个组成部分,若能在数据库工程中好好利用 ER 图,便能让您生成高质量的数据库设计,用于数据库创建,管理和维护,也为人员间的交流提供…
《Either Way》
누가 내 말투가 재수없대
有人说我语气很讨人厌
잘난 척만 한대
有人说我自以为是
또 누구는 내가 너무 착하대
还有人说是我太善良
바보같을 정도래
以至于像个傻瓜
가끔은 이해조차 안 되는 시선들
有些时候 被投来不…
20232424 2025-2026-1 《网络与系统攻防技术》实验六实验报告
20232424 2025-2026-1 《网络与系统攻防技术》实验六实验报告
1.实验内容
总结一下本周学习内容,不要复制粘贴
2.实验过程
3.问题及解决方案问题1:XXXXXX
问题1解决方案:XXXXXX
问题2:XXXXXX
问题2解决方案:XXXXX…