当前位置: 首页 > 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;
}

相关文章:

  • 【笔记】记一次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(文档管理系统)的详细说明,涵盖其核心功能、架构、配置及实际应用
  • 顶层架构 - 消息集群推送方案
  • 专访|《内沙》导演杨弋枢:挽留终将失去的美好
  • 探秘多维魅力,长江经济带、珠三角媒体总编辑岳阳行启动
  • 2025年“新时代网络文明公益广告”征集展示活动在沪启动
  • 既是工具又是食物,可食用机器人开启舌尖上的新科技
  • 《大风杀》导演张琪:为了不算计观众,拍了部不讨好的警匪片
  • 玉渊谭天丨卢拉谈美国降低对华关税:中国的行动捍卫了主权