Leetcode之PHP版题目解析(203. Remove Linked List Elements)
2019-3-18 星期一 开始吧
上一题开心数链接 Leetcode基础刷题之PHP解析(202. Happy Number)
题目描述
移除链表中所有值等于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; } }
运行结果
No Comments