• leetcode 203.删除链表中的元素


    解题思路:

    删除的本质是,找到那个元素,让那个元素的前一个元素指向这个元素的后一个元素。

    首先我想到的是定义一个current,表示当前元素,用来向后移动,在定义一个previous,表示当前元素的前一个元素,找到的时候改变previous和current元素的指向

    var removeElements = function(head, val) {
            var current = head
            var previous = null
            while(current && current.next) {
                if(current.val == val){
                    previous = current
                    previous.next = current.next
                    current.next = current.next.next
                }else{
                    previous = current
                    current = current.next
                }
            }
            return current
        };

    这样对是对了,但是要求输出没有删除的元素。我这样输出的是被删除元素。还没有弄明白这个leetcode的玩法。真的懵逼。

    修改代码:

    var removeElements = function(head, val) {
            //1.创建头节点
            var headnode = new ListNode(0)
            //2.将头结点的next指向head
            headnode.next = head
            //3.current表示当前节点
            var current = headnode
            while(current && current.next) {
                if(current.next.val == val){
                    current.next = current.next.next
                }else{
                    current = current.next
                }
                console.log(headnode.next);
            }
            return headnode.next
        };

    之前的解法是不知道怎么获取最后剩下的节点,所以就定义一个headnode一步一步执行获取,开始将头节点headnode的next指向head,随之遍历,这个next指向会一直向后移动,直到没有下一层,就会返回。

    不积跬步无以至千里
  • 相关阅读:
    2.替换空格
    1.二维数组的查找
    poj 2431 expedition
    python入门第三天
    python入门第二天__练习题
    [Python3.6] print vs sys.stdout.write
    python入门第二天
    使用Flask-mail发送邮件无法连接主机
    KMP
    逆序对 线段树&树状数组 (重制版)
  • 原文地址:https://www.cnblogs.com/lyt0207/p/12364513.html
Copyright © 2020-2023  润新知