我是靠谱客的博主 飞快电灯胆,这篇文章主要介绍LeetCode第203题—移除链表元素????分析阶段????代码阶段,现在分享给大家,希望可以做个参考。

本次写的题目是移除链表元素​​​​​​​,为LeetCode里面的题目,让我们来康康是如何解出这道题目的吧,各位尚没有思路的小伙伴可以跟随着博主的解题思路一步步来,感受一下????

????分析阶段

第一眼见该题目,是一个链表中的某一个值的所有元素都给移除掉,于是按照题目,我们可以画出下面的情况????:

情况①相对来说是较好解决的,我们只需要用到两个变量,创建两个节点,一个命名为del,另一个命名为cur,del作为探针的角色,然后cur紧随其后,当del探到了要删的元素,便将cur的next变为del的下一个节点,就如下图一样????:

在要删除元素为23的情况下:

但如果要将连续的要删除元素给跳过,我们要让cur在del碰到要删元素的时候,将这个元素删除,即让cur的next变为del的next,链接del的下一个节点;但当del不为要删元素的时候,我们要及时把cur给跟上。然后del继续往后探索????:

以上便是分析阶段全部了~接下来请看代码阶段???? 


????代码阶段

整个题目中最重要的是要做到  当遇到要删元素的时候将del的next赋给cur的next  和  当没有遇到要删元素的时候cur要跟上del  ,这两种情况是相反的情况,所有我们可以用if  else语句来实现:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution { public ListNode removeElements(ListNode head, int val) { ListNode cur = head; ListNode del = cur; while(del!=null){ if(del.val==val){ cur.next = del.next; del = del.next; }else{ cur = del; del = del.next; } } return head; } }

通过以上操作,我们就能够轻松地将要删的单独元素或连续要删元素都给删去了????下面来跑一遍试一下????:

???? ???? ???? ???? ???? ???? 怎么会报错!!!!

看了最终输出的结构,按原本的预期应该是一个没有,现在确还剩下一个7????咋回事。

将这个例子放入我们的代码中自己过一遍后发现原来少了一种情况:当开头也有要删元素的时候

所以,博主针对该情况又在代码最后加多了一段代码来处理该情况:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution { public ListNode removeElements(ListNode head, int val) { ListNode cur = head; ListNode del = cur; while(del!=null){ if(del.val==val){ cur.next = del.next; del = del.next; }else{ cur = del; del = del.next; } } if(head!=null&&head.val==val){ head = head.next; } return head; } }

 再跑一遍逝逝????

 nice????✨


以上!便是全部的啦????

又是收获满满的一天~

最后

以上就是飞快电灯胆最近收集整理的关于LeetCode第203题—移除链表元素????分析阶段????代码阶段的全部内容,更多相关LeetCode第203题—移除链表元素内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部