<?php
/**
* Created by PhpStorm.
* User: huizhou
* Date: 2018/12/2
* Time: 15:29
*/ /**
* 合并两个有序链表
* 思路:简单的合并排序。由于链表本来就是递增的,所以每次将两个链表中较小的部分拿过来就可以了。
*/ class MergeNode{
private $next;
private $value; public function __construct($value = null)
{
$this->value = $value;
} public function getValue(){
return $this->value;
} public function setValue($value){
$this->value = $value;
} public function getNext(){
return $this->next;
} public function setNext($next){
$this->next = $next;
} } function test(){ // 创建两个有序的链表 $linkList=new MergeNode(); $linkList->setNext(null); $temp=$linkList; for($i=1;$i<=10;$i+=2){ $node=new MergeNode(); $node->setValue($i); $node->setNext(null); $temp->setNext($node); $temp=$node; } //第二个有序的链表
$list2=new MergeNode(); $temp=$list2; for($i=2;$i<=10;$i+=2){ $node=new MergeNode(); $node->setValue($i); $node->setNext(null); $temp->setNext($node); $temp=$node; } $result = Merge($linkList,$list2); while($result != null){
if($result->getValue()){
echo $result->getValue() .",";
}
$result = $result->getNext();
} } test(); /**
* 合并两个有序链表
* @param MergeNode $pHead1
* @param MergeNode $pHead2
* @return MergeNode
*/
function Merge(MergeNode $pHead1,MergeNode $pHead2){ if($pHead1 == null){
return $pHead2;
} if($pHead2 == null){
return $pHead1;
} if($pHead1->getValue() < $pHead2->getValue()){
$resultHead = $pHead1;
$pHead1 = $pHead1->getNext();
}else{
$resultHead = $pHead2;
$pHead2 = $pHead2->getNext();
} $pre = $resultHead;
while ($pHead1 && $pHead2){ if($pHead1->getValue() <= $pHead2->getValue()){
$pre->setNext($pHead1);
$pHead1 = $pHead1->getNext();
$pre = $pre->getNext();
}else{
$pre->setNext($pHead2);
$pHead2 = $pHead2->getNext();
$pre = $pre->getNext();
} } if($pHead1 != null){
$pre->setNext($pHead1);
} if($pHead2 !=null){
$pre->setNext($pHead2);
} return $resultHead; }

php链表笔记:合并两个有序链表的更多相关文章

  1. 【Leetcode链表】合并两个有序链表(21)

    题目 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1-> ...

  2. 【LeetCode题解】21_合并两个有序链表

    目录 21_合并两个有序链表 描述 解法一:迭代 思路 Java 实现 Python 实现 解法二:递归 思路 Java 实现 Python 实现 21_合并两个有序链表 描述 将两个有序链表合并为一 ...

  3. leetcode 21 Merge Two Sorted Lists 合并两个有序链表

    描述: 合并两个有序链表. 解决: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if (!l1) return l2; if (!l2) ...

  4. Leecode刷题之旅-C语言/python-21.合并两个有序链表

    /* * @lc app=leetcode.cn id=21 lang=c * * [21] 合并两个有序链表 * * https://leetcode-cn.com/problems/merge-t ...

  5. LeetCode初级算法--链表02:合并两个有序链表

    LeetCode初级算法--链表02:合并两个有序链表 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn. ...

  6. <每日 1 OJ> -LeetCode 21. 合并两个有序链表

    题目: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4输出:1->1-> ...

  7. 算法练习之合并两个有序链表, 删除排序数组中的重复项,移除元素,实现strStr(),搜索插入位置,无重复字符的最长子串

    最近在学习java,但是对于数据操作那部分还是不熟悉 因此决定找几个简单的算法写,用php和java分别实现 1.合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两 ...

  8. LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)

    21. 合并两个有序链表 21. Merge Two Sorted Lists 题目描述 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. LeetCode ...

  9. leecode刷题(23)-- 合并两个有序链表

    leecode刷题(23)-- 合并两个有序链表 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2-> ...

随机推荐

  1. Quartz2作业监听

    在本教程中,我们将展示/介绍如何创建一个JobListener,跟踪运行工作状态在作业完成等. P.S 这个例子是Quartz 2.1.5 1. Quartz 作业 作业 - 用于打印一个简单的信息, ...

  2. 深夜Python - 第1夜 - for 迷 in 迷思

    深夜Python - 第1夜 - for 迷 in 迷思 在一个月黑风高的夜晚,我悄悄打开编辑器,进入程序的世界.刚刚学会Python的我,由于一段时间的过度装B,被委托优化一段程序,我信心十足地接下 ...

  3. Springboot整合dubbo搭建基本的消费、提供和负载均衡

    文章目录 1.确定接口 2.创建提供者 2.1 pom配置 2.2dubbo配置文件 2.3 application.properties 2.4 mybatis相关 2.4.1 配置UserMapp ...

  4. String 字符串对象

    String是什么 String字符串,是一种引用数据类型,并不是基础数据类型. 对于基础数据类型和引用数据类型的区别: 基础数据类型,在创建时直接将值存放在栈内存中. 引用数据类型,在创建时栈内存中 ...

  5. C#中,用户控件UserControl里面用Panl加载UserControl,并实现利用委托互相传值

    用户控件主窗体结构:左侧树形菜单,右侧Panl: 根据点击的菜单节点,panl里面选择性加载某一个子窗体用户控件,并传值给子窗体: 反之,在子窗体进行相应的操作之后,传值给主窗体,触发主窗体的刷新. ...

  6. Android开发 AAC的ADTS头解析[转载]

    原文地址:https://www.jianshu.com/p/b5ca697535bd 1. ADTS(Audio Data Transport Stream)头之于AAC AAC音频文件的每一帧都由 ...

  7. Qt Creator配置

    1.安装Git sudo apt install git 2.配置Git 用户和邮箱: git config --global user.name "xxx" git config ...

  8. load data local infile

    发财 基本语法:load data [low_priority] [local] infile '文件名称' [replace替换策略 | ignore忽略策略]into table 表名称[fiel ...

  9. rancher v2.2.4创建kubernetes集群出现[etcd] Failed to bring up Etcd Plane: [etcd] Etcd Cluster is not healthy

    主机:rancher(172.16.2.17),master(172.16.2.95),node01(172.16.2.234),node02(172.16.2.67) 问题:开始是用的rancher ...

  10. manacher/马拉车常用用法一览

    因为manacher算法把原来的字符串扩大了两倍,因此在应用时许多二级结论都非常不直观,现场推出来很麻烦,因此笔者在此做个简单整理,如果发现有错误或者有常用的我没有涉及到的,恳请在下方评论区指出,我会 ...