力扣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。

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

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

共勉!

相关推荐
一缕叶2 分钟前
P8772 [蓝桥杯 2022 省 A] 求和
数据结构·c++·算法
菜还不练就废了4 分钟前
蓝桥杯c/c++需要掌握的基础语法总结
c语言·c++·蓝桥杯
欧尼戏精少女1 小时前
26岁备考PMP,经验分享
职场和发展·项目管理·求职招聘·pmp·pmp备考
金融OG1 小时前
99.12 金融难点通俗解释:毛利率
python·算法·机器学习·数学建模·金融
晨辉软件2 小时前
晨辉面试抽签和评分管理系统之十二:如何让同一批、不同组别的面试考生抽到连续的号码?
面试·职场和发展
十二测试录2 小时前
【大厂面试题】软件测试面试题整理(附答案)
经验分享·面试·职场和发展
夏末秋也凉6 小时前
力扣-数组-283 移动零
算法·leetcode
jerry6096 小时前
回溯总结2(子集问题)
算法
苏苏大大6 小时前
【leetcode 23】54. 替换数字(第八期模拟笔试)
java·算法·leetcode
Again_acme7 小时前
20250117面试鸭特训营第25天
网络·面试·职场和发展