Leetcode之PHP版(203. Remove Linked List Elements)

链表 · curry · 于 24天前 发布 · 28 次阅读

题目描述

移除链表中所有值等于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;      
  }
}
 

本文由 curry 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 0 条回复 单链表 php 算法
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
吴亲库里的深夜食堂