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

今日写题04work

题目:移除链表元素

两种实现思路

思路一

使用双指针,prev,cur快慢指针解决。当cur不等于val,两个指针跳过。当等于val时,要考虑两种情况,一种是pos删,一种是头删除。

pos删除就是正常情况,但头删是一种特殊情况,比如第一个数据就是等于val。所以,我们在这里分类处理。

struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode* cur=head,*prev=NULL;while(cur){if(cur->val!=val){prev=cur;cur=cur->next;}else{if(prev==NULL){head=cur->next;free(cur);cur=head;}else{prev->next=cur->next;free(cur);cur=prev->next;}}}return head;
}

思路二

尾插到新链表,如果不等于val,尾插到新链表。如果等于val,那就头删。末尾记得把tail的next置空,否则如果最后一个数据要删除的话,那tail的next就成了野指针。还有两种特殊情况,空链表和全等于val。

空链表

tail等于空指针,如果末尾在使用就是空指针引用。

全等于val

这时全部头删,没有一个结点尾插。那tail还是空指针,末尾使用就是空指针引用。

这两种情况都是空指针引用错误。所以,我们可以在末尾加一个if语句,判断tail是否为空。

如果为空,就不执行。如果不为空,那就执行。

最后记得return的是新的头指针,newHead。

​
struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode* newHead=NULL,*tail=NULL;struct ListNode* cur=head;while(cur){if(cur->val != val){if(tail==NULL){newHead=tail=cur;}else{tail->next=cur;tail=cur;}cur=cur->next;}else{struct ListNode* next=cur->next;free(cur);cur=next;}}if(tail){tail->next=NULL;}return newHead;
}​

题目链接:203. 移除链表元素 - 力扣(LeetCode)

http://www.lryc.cn/news/537558.html

相关文章:

  • Managed Lustre 和 WEKA:高性能文件系统的对比与应用
  • LeetCode541 反转字符串2
  • MAC 系统关闭屏幕/睡眠 后被唤醒 Wake Requests
  • 论文笔记:Multi-Head Mixture-of-Experts
  • vue和Django快速创建项目
  • Java LinkedList(单列集合)
  • 多线程基础面试题剖析
  • .NET SixLabors.ImageSharp v1.0 图像实用程序控制台示例
  • EasyExcel提取excel文档
  • 第十五届蓝桥杯嵌入式省赛真题(满分)
  • ASP.NET Core Web应用(.NET9.0)读取数据库表记录并显示到页面
  • 【Sceneform-EQR】实现3D场景背景颜色的定制化(背景融合的方式、Filament材质定制)
  • LeetCode1706
  • 2517. 礼盒的最大甜蜜度(Maximum Tastiness of Candy Box)
  • Golang 的字符编码与 regexp
  • 利用ollama 与deepseek r1大模型搭建本地知识库
  • Java短信验证功能简单使用
  • CAS单点登录(第7版)21.可接受的使用政策
  • 53倍性能提升!TiDB 全局索引如何优化分区表查询?
  • Pythong 解决Pycharm 运行太慢
  • 库里存储的数据有大量回车时,该如何进行存取
  • 【devops】Github Actions Secrets | 如何在Github中设置CI的Secret供CI的yaml使用
  • 体验 DeepSeek-R1:解密 1.5B、7B、8B 版本的强大性能与应用
  • 一文说清楚什么是Token以及项目中使用Token延伸的问题
  • 大模型-Tool call、检索增强
  • 【算法】【区间和】acwing算法基础 802. 区间和 【有点复杂,但思路简单】
  • Ubuntu22.04通过Docker部署Jeecgboot
  • HTML4
  • STM32F10X 启动文件完整分析
  • typescript快速入门之安装与运行