题目描述
面试现在一般喜欢搞考一些算法题,最近闲来无事,过来LeetCode上刷一刷简单的额题目活跃一下大脑。来看一下题目的描述:删除链表中等于给定值 val 的所有节点。
示例:
输入:1->2->6->3->4->5->6, val = 6
输出:1->2->3->4->5
代码实现
代码实现方式一,遍历链表,断掉所有节点值等于val的链,此时要考虑第一个节点要被删除的情况。
代码实现方式二,也是遍历链表,断掉所有节点值等于val的链,但是引入dummyHead就不用考虑head了
代码实现方式三,使用的是递归的方式,看起来更加简便,但是使用递归方式需要注意栈的调用深度,如果数据量大的话,会造成栈的溢出,为啥会栈的溢出可以阅读我前面的文章java面试中必问的oom问题
总结
一道题可能有很多种,每次多考虑几种实现,然后分析一下时间复杂度和空间复杂度,选择最高效的一种方式。
如果觉得《LeetCode第203题移除链表元素》对你有帮助,请点赞、收藏,并留下你的观点哦!