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指向会一直向后移动,直到没有下一层,就会返回。
    不积跬步无以至千里
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号