Leetcode之PHP版题目解析(203. Remove Linked List Elements)


2019-3-18 期一  

上一题开心数链接 Leetcode基础刷题之PHP解析(202. Happy Number)

988d3f73f54300573b714579b46d9c0f.png

题目描述

移除链表中所有值等于val的数字,比如图中val值是6,那么最后返回的链表就不再包含6这个元素.第一遍看到这个想到的就是递归.

具体实现

  
    /**
     * @param ListNode $head
     * @param Integer $val
     * @return ListNode
     */
    function removeElements($head, $val) {
        
        if(!$head){
            return null;
        }
        $head->next=$this->removeElements($head->next,$val);
        return  $head->val==$val?$head->next:$head;
  }

其他

我们也可以这样,我们可以判断当前结点的下一个结点的值是否等于给定的val,如果等于,那么我们就把当前结点的下一个结点的指针指向当前结点的下下一个结点,如果不等于,那么就把当前结点的下一个结点赋值给当前结点,这个过程在while里面做循环判断.最后还需要验证一下头结点是否要删除.因为如果头结点等于给定值的话(头结点没有前驱结点),我们就需要把头结点的下一个结点作为新的头结点.

实现代码

/**
     * @param ListNode $head
     * @param Integer $val
     * @return ListNode
     */
    function removeElements($head, $val) {
        if(!$head){
            return null;
        }
        $data=$head;
        while($data->next){
            if($data->next->val==$val){
                $data->next=$data->next->next;
            }else{
                $data=$data->next;
            }
        }
        return $head->val==$val?$head->next:$head;      
  }
}

运行结果

3921d5c5c8c39663a8e3aa6fbb56139f.png


Vote Vote Cancel Collect Collect Cancel

<< 上一篇: Leetcode PHP题解--D8 832. Flipping an Image

>> 下一篇: Leetcode PHP题解--D9 657. Robot Return to Origin