我是靠谱客的博主 飞快电灯胆,最近开发中收集的这篇文章主要介绍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语句来实现:

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????咋回事。

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

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

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题—移除链表元素????分析阶段????代码阶段所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部