当前位置: 首页 > 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.dtcms.com/a/193827.html

相关文章:

  • 【笔记】记一次PyCharm的问题反馈
  • 图像处理:预览并绘制图像细节
  • PT2031单触控单输出触摸IC
  • 快速选择算法:优化大数据中的 Top-K 问题
  • Ubuntu系统安装docker仓库教程
  • Java微服务架构实战:Spring Boot与Spring Cloud的完美结合
  • Python 3.13.3 安装教程
  • 1T 服务器租用价格解析
  • 硬件厂商的MIB文档详解 | 如何查询OID? | MIB Browser实战指南-优雅草卓伊凡
  • 自媒体工作室如何矩阵?自媒体矩阵养号策略
  • 深入 Linux 内核:GPU Runtime Suspend 源码和工作流程全面分析
  • 【科普】供应链管理(Supply Chain Management)
  • 计算机指令分类和具体的表示的方式
  • window 显示驱动开发-使用有保证的协定 DMA 缓冲区模型
  • 29、魔法微前端——React 19 模块化架构
  • 04、基础入门-SpringBoot官方文档架构
  • 【GNN笔记】Signed Graph Convolutional Network(12)【未完】
  • FPGA: XILINX Kintex 7系列器件的架构
  • SAP-ABAP:SAP DMS(文档管理系统)的详细说明,涵盖其核心功能、架构、配置及实际应用
  • 顶层架构 - 消息集群推送方案
  • element plus el-upload 和el-image 配合图片上传和显示
  • 大模型的实践应用43-基于Qwen3(32B)+LangChain框架+MCP+RAG+传统算法的旅游行程规划系统
  • 【设计模式】- 行为型模式1
  • GpuGeek 网络加速:破解 AI 开发中的 “最后一公里” 瓶颈
  • 【localstorage、sessionStorage和cookie】
  • AAAI2024 | 基于特征多样性对抗扰动攻击 Transformer 模型
  • 共有四个站进行码分多址CDMA通信。四个站的码片序列为......
  • XML简要介绍
  • 「Mac畅玩AIGC与多模态40」开发篇35 - 用 Python 开发服务对接 SearxNG 与本地知识库
  • Qt—用SQLite实现简单的注册登录界面