力扣203题(3)

题目及之前的两种解法大家可以移步到这里:

https://blog.csdn.net/suibiansa_/article/details/145242573?spm=1001.2014.3001.5501

力扣203题------ 移除链表元素-CSDN博客

今天呢我们来写一下第三种解法:

虚拟创建一个头结点

java 复制代码
ListNode first=new ListNode();
first.next=head;
ListNode aa=first;

while(aa.next!=null){
    if(aa.next.val==val){
        aa.next=aa.next.next;
    }else{
        aa=aa.next;
    }
}
return  first.next;

思路解释

这里为什么要创建两个指针?

因为下面while循环会使用指针遍历一次链表,如果我们用一个指针first的话,最后返回值为null。

为什么用第二个指针遍历,最后返回第一个指针的后继依然能够满足题目条件?

因为我们在定义两个指针时,已经让两个指针指向同一个节点位置,当遍历完第二个指针时也相当于便历了第一个,最后仍然返回我们创建的虚拟头结点后继即可。

共勉!

相关推荐
AI柠檬9 小时前
机器学习:数据集的划分
人工智能·算法·机器学习
让我们一起加油好吗10 小时前
【数论】裴蜀定理与扩展欧几里得算法 (exgcd)
算法·数论·裴蜀定理·扩展欧几里得算法·逆元
Geo_V10 小时前
提示词工程
人工智能·python·算法·ai
侯小啾10 小时前
【22】C语言 - 二维数组详解
c语言·数据结构·算法
TL滕10 小时前
从0开始学算法——第一天(如何高效学习算法)
数据结构·笔记·学习·算法
傻童:CPU10 小时前
DFS迷宫问题
算法·深度优先
B站_计算机毕业设计之家10 小时前
计算机视觉:python车辆行人检测与跟踪系统 YOLO模型 SORT算法 PyQt5界面 目标检测+目标跟踪 深度学习 计算机✅
人工智能·python·深度学习·算法·yolo·目标检测·机器学习
sheepfagdng11 小时前
求职专栏-【面试-自我介绍】
面试·职场和发展
一个不知名程序员www11 小时前
算法学习入门---前缀和(C++)
c++·算法
jackzhuoa11 小时前
Rust API 设计的零成本抽象原则:从语言基石到工程实践
算法·rust