PHP实现合并两个排序链表的方法

PHP实现合并两个排序链表的方法

1. 思路

  • 定义一个新的链表,用来存放合并后的元素
  • 依次比较两个链表中的元素大小,较小的元素作为新链表的头节点,将其后继指向较大元素的头节点
  • 重复以上步骤,直到其中一个链表为空
  • 将非空链表的剩余元素依次加入到新链表的末尾

2. 代码实现

class ListNode {
    public $val = 0;
    public $next = null;
    function __construct($val) {
        $this->val = $val;
    }
}

function mergeTwoLists($l1, $l2) {
    // 定义一个新的链表,用来存放合并后的元素
    $dummy = new ListNode(0);
    $cur = $dummy;
    // 依次比较两个链表中的元素大小
    while ($l1 && $l2) {
        if ($l1->val < $l2->val) {
            $cur->next = $l1;
            $l1 = $l1->next;
        } else {
            $cur->next = $l2;
            $l2 = $l2->next;
        }
        $cur = $cur->next;
    }
    // 将非空链表的剩余元素依次加入到新链表的末尾
    if ($l1) {
        $cur->next = $l1;
    }
    if ($l2) {
        $cur->next = $l2;
    }
    // 返回合并后的链表
    return $dummy->next;
}

3. 示例说明

示例一

$l1 = new ListNode(1);
$l1->next = new ListNode(3);
$l1->next->next = new ListNode(5);

$l2 = new ListNode(2);
$l2->next = new ListNode(4);
$l2->next->next = new ListNode(6);

$mergedList = mergeTwoLists($l1, $l2);
while ($mergedList) {
    echo $mergedList->val . " ";
    $mergedList = $mergedList->next;
}
// 输出结果:1 2 3 4 5 6

示例二

$l1 = new ListNode(1);
$l1->next = new ListNode(2);
$l1->next->next = new ListNode(3);

$l2 = new ListNode(4);
$l2->next = new ListNode(5);
$l2->next->next = new ListNode(6);

$mergedList = mergeTwoLists($l1, $l2);
while ($mergedList) {
    echo $mergedList->val . " ";
    $mergedList = $mergedList->next;
}
// 输出结果:1 2 3 4 5 6

两个示例中,我们分别定义了两个链表,调用mergeTwoLists函数将两个链表合并。

第一个示例中,$l1链表的元素值为1、3、5,$l2链表的元素值为2、4、6,最终合并后的结果为1、2、3、4、5、6。

第二个示例中,$l1链表的元素值为1、2、3,$l2链表的元素值为4、5、6,最终合并后的结果同样为1、2、3、4、5、6。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现合并两个排序链表的方法 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • php结合表单实现一些简单功能的例子

    下面是完整攻略: 一、需求说明 本例子旨在通过 PHP 结合表单实现一些简单功能。具体来说,我们将要完成以下两个功能: 用户注册:用户通过在表单中输入用户名和密码,点击注册按钮实现用户注册功能。 留言板:用户通过在表单中输入留言内容,点击提交按钮实现留言功能。 二、实现步骤 1. 安装环境 首先,我们需要在本地安装 PHP 环境。这里以 XAMPP 为例,具…

    PHP 2023年5月27日
    00
  • PHP使用函数用法详解

    PHP使用函数用法详解 什么是函数 函数是将一些指令打包起来,以便重用的代码块。在 PHP 中,函数是基本的代码组织单元,允许您将代码块划分为逻辑段。通过给函数名称指定参数列表,可以将数据传递到函数内部。函数可以返回值来提供一个结果。 函数的声明方式 function functionName($parameter1, $parameter2, …) {…

    PHP 2023年5月27日
    00
  • php数组函数序列之next() – 移动数组内部指针到下一个元素的位置,并返回该元素值

    PHP数组函数之next() 在PHP里有一系列用于操作数组的函数,其中之一是next()函数。本文将详细讲解next()函数的用法及注意点。 概述 next()函数指从当前指针所在位置向后移动一位,并返回该数组元素的值。如果next()的参数是一个空数组或指向数组末尾,则返回false。 语法如下: mixed next ( array &$arr…

    PHP 2023年5月26日
    00
  • php简单分页类实现方法

    让我来为您详细讲解“PHP简单分页类实现方法”的完整攻略。 1. 确定分页需求 在开始实现分页类之前,需要了解分页的具体需求,例如每页显示数量、总数据量、当前页码等,这些信息将作为分页类的初始化参数。在本次示例中,我们假设需求如下: 每页显示10条数据; 总共有100条数据; 当前页码为2。 2. 实现分页类 2.1 确定类的属性和方法 根据需求,我们需要实…

    PHP 2023年5月27日
    00
  • PHP的数组中提高元素查找与元素去重的效率的技巧解析

    当我们在使用PHP中的数组时,有时候需要快速地查找某个元素以及对数组进行去重操作。为了提高这些操作的效率,我们可以应用以下技巧。 使用数组键名进行元素查找 在PHP中,使用in_array函数可以检查一个值是否在一个数组当中,但是这个函数是线性查找,所以执行效率较低。如果我们已知要查找的元素值,并且这个元素值在数组中不重复,那么我们可以使用数组键名进行查找,…

    PHP 2023年5月26日
    00
  • php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。

    PHP数组函数序列之array_push() array_push() 函数将指定的元素添加到数组的末尾(即入栈),并返回一个新的数组长度。该函数可以添加一个或多个元素到数组中。 语法 array_push(array, value1, value2, …) 参数 array: 必需,规定要添加元素的数组。 value1: 必需,规定要添加到数组中的第一…

    PHP 2023年5月26日
    00
  • php实现httpclient类示例

    针对 “php实现httpclient类示例” 的攻略,可以分为以下几个部分: 1. 了解HTTP请求 在实现HTTP客户端类之前需要对HTTP请求有一定的了解。HTTP请求通常由请求方式(GET、POST、PUT、DELETE等)、请求地址(URL)、协议版本(HTTP/1.0或HTTP/1.1)、请求头(Accept、User-Agent、Content…

    PHP 2023年5月23日
    00
  • php reset() 函数指针指向数组中的第一个元素并输出实例代码

    当我们处理数组时,经常要在数组元素之间移动指针。在PHP中,数组指针表示数组中当前指向元素的位置。PHP中的reset()函数用于将数组指针指向数组中的第一个元素。本文将详细介绍PHP reset()函数,并提供一些示例来说明如何在实际编码中使用该函数。 reset()函数的语法 reset()函数的语法如下: reset(array $array): mi…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部