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

移除链表元素数据结构oj题(力扣题206)

目录

题目描述:

题目解读(分析)

解决代码


题目描述:

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

题目解读(分析):

对于需要删除链表中val的值,我们立马可以想到一种方法一就是遍历循环寻找val这个值,进行删除该节点,这中方法是最容易想出来的,可是时间复杂度是为O(n_{}^{2})。

而这里我们还有一种方法二就是用类似空间换时间的方法(这里没有向内存申请空间,也同样将时间复杂度降为O(n))。这里我们着重讲解这个方法,这个方法就是直接创建一个新的链表来收集删除所有删除val值的节点,并进行连接。如图展示:

写代码过程中我们需要使用ptail来遍历新链表plist来存储新链表的头节点,而pcur是用来遍历原链表和val进行比较,然后得到符合题意的节点移动到ptail中。在最后时如果ptail不为空,那就必须将ptail->next置空,可以将这个作为结束节点,避免返回不符合题意值。

解决代码:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/typedef struct ListNode ListNode;
ListNode* removeElements(ListNode* head, int val) {//  assert(head);ListNode* plist = NULL;//存储ListNode* ptail = NULL;//筛选ListNode* pcur = head;//遍历while (pcur){if(pcur->val != val){if(ptail == NULL){ptail = plist = pcur;}else{ptail->next = pcur;ptail = ptail->next;}}pcur=pcur->next;}//考虑为空if(plist != NULL){ptail->next = NULL;}return plist;
}

http://www.xdnf.cn/news/480025.html

相关文章:

  • 基于MATLAB的人脸识别,实现PCA降维,用PCA特征进行SVM训练
  • 无线攻防实战指南:Wi-Fi默认密码
  • 【未】[启发式算法]含初始解要求的有:TS, GA, SA, DPSO
  • WebSocket 客户端 DLL 模块设计说明(基于 WebSocket++ + Boost.Asio)
  • Core Web Vitals 全链路优化:从浏览器引擎到网络协议深度调优
  • linux下tcp/ip网络通信笔记1,
  • uniapp-商城-57-后台 新增商品(弹窗属性数据添加父级)
  • uniapp婚纱预约小程序
  • 一键清理功能,深度扫描本地存储数据
  • RK3588 ADB使用
  • 品铂科技在UWB行业地位综述(2025年更新)
  • Python线性回归:从理论到实践的完整指南
  • 大语言模型 10 - 从0开始训练GPT 0.25B参数量 补充知识之模型架构 MoE、ReLU、FFN、MixFFN
  • 学习海康VisionMaster之直方图工具
  • MySQL中innodb的ACID
  • python中函数定义下划线代表什么意思,一个下划线,两个下划线什么意思
  • entity线段材质设置
  • 学习以任务为中心的潜动作,随地采取行动
  • Elasticsearch 分词与字段类型(keyword vs. text)面试题
  • 深入浅出 MinIO:身份管理与权限配置实战 !
  • AI与产品架构设计系列(2):Agent系统的应用架构与落地实
  • GpuGeek 网络加速:破解 AI 开发中的 “最后一公里” 瓶颈
  • vhca_id 简介,以及同 pf, vf 的关系
  • QT6 源(103)篇三:阅读与注释 QPlainTextEdit,给出源代码
  • 基于OpenCV的SIFT特征匹配指纹识别
  • 基于 CSS Grid 的网页,拆解页面整体布局结构
  • MCP协议的核心机制和交互过程
  • Review --- 框架
  • #跟着若城学鸿蒙# web篇-获取定位
  • 医学图像分析中的大规模基准测试与增强迁移学习|文献速递-深度学习医疗AI最新文献