python链表合并去重_合并两个链表并去重(php实现)

这个也是某公司面试题,自己没做出来,原因有几点:

自己学的不扎实,眼高手低

面试官要我在白板上写出程序,必须得php写,思路不行,写的时候感觉白板有点小

写的过程中发现实现还是会需要一些步骤的,而且感觉自己目前无法一步实现最优写法

所以大家还是在平时多看书,广而深,看一个东西就学会,放开手去实现,最好还是有博客记录下自己的东西,也算是对知识点的回顾,免得到时面试时被面得无(言)颜以对。

以下是PHP初步实现

/**

* 1-2-2-3-5

* 1-2-3-3-4-5

*

* 1-2-3-4-5

*/

class node{

public $val = null;

public $next = null;

}

class Link{

public $head = null;

public $test = 4;

function __construct($arr){

$this->head = new node();

$p = $this->head;

foreach($arr as $n){

$node = new node();

$node->val = $n;

$p->next = $node;

$p = $node;

}

$p->next = null;

}

function show(){

$p = $this->head;

while($p->next != null){

$p = $p->next;

echo $p->val;

}

echo '
';

}

}

$arr1 = array(1,2,3,3,4,5);

$arr2 = array(1,2,3,4,5);

$L1 = new Link($arr1);

$L2 = new Link($arr2);

$L1->show();

$L2->show();

$L3 = new Link(array());

$p1 = $L1->head;

$p2 = $L2->head;

$p3 = $L3->head;

while(($p1->next != null) && ($p2->next != null)){

$tp1 = $p1->next;

$tp2 = $p2->next;

if($tp1->val <= $tp2->val){

if($p3->val == null || $p3->val != $tp1->val){

$node = new node();

$node->val = $tp1->val;

$p3->next = $node;

$p3 = $node;

}

$p1 = $p1->next;

} else {

if($p3->val == null || $p3->val != $tp2->val){

$node = new node();

$node->val = $tp2->val;

$p3->next = $node;

$p3 = $node;

}

$p2 = $p2->next;

}

}

if($p1->next != null){

while($p1->next != null){

if($p3->val == null || $p3->val != $tp1->val){

$node = new node();

$node->val = $p1->val;

$p3->next = $node;

$p3 = $node;

}

$p1 = $p1->next;

}

}

if($p2->next != null){

while($p2->next != null){

if($p3->val == null || $p3->val != $tp2->val){

$node = new node();

$node->val = $p2->val;

$p3->next = $node;

$p3 = $node;

}

$p2 = $p2->next;

}

}

$L3->show();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值