返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++怎么合并两个排序的链表
  • 187
分享到

C++怎么合并两个排序的链表

2023-06-22 00:06:06 187人浏览 八月长安
摘要

本篇内容主要讲解“c++怎么合并两个排序的链表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么合并两个排序的链表”吧!题目描述:输入两个递增的链表,单个链表的长度为n,合并这两个链表并使

本篇内容主要讲解“c++怎么合并两个排序链表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么合并两个排序的链表”吧!

题目描述:

输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。

数据范围: n为0~1000,节点值为-1000~1000

要求:空间复杂度 O(1),时间复杂度 O(n)

如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},转换过程如下图所示:

C++怎么合并两个排序的链表

或输入{-1,2,4},{1,3,4}时,合并后的链表为{-1,1,2,3,4,4},所以对应的输出为{-1,1,2,3,4,4},转换过程如下图所示:

C++怎么合并两个排序的链表

示例:

输入:

{1,3,5},{2,4,6}

返回值:

{1,2,3,4,5,6}

解题思路:

本题考察数据结构链表的使用。有两种解法:

  1. 遍历比较。建立一个新的头节点head后,用cur指针指向下一节点;然后依次比较两个子链表节点的值大小,谁小先塞谁,塞完就将其指向下一个节点;直到某个子链表遍历完,将cur的next指向没遍历完的那个链表当前的节点。

  2. 递归。从pHead1和pHead2的头节点开始比较,谁小就返回谁,然后其下一个指向,指向Merge函数的结果,Merge输入的两个链表为小的一方的next和大的一方的头节点,也就是用下一个值和它继续比谁更小;依次类推,递归中断的标志是有其中一个子链表指向nullptr,返回另一方即可。

测试代码:

解法一,遍历:

class Solution {public:    Listnode* Merge(ListNode* pHead1, ListNode* pHead2) {        ListNode *head=new ListNode(-1);        ListNode *cur=head;        while(pHead1&&pHead2)        {            if(pHead1->val<=pHead2->val)            {                cur->next=pHead1;                pHead1=pHead1->next;            }            else{                cur->next=pHead2;                pHead2=pHead2->next;            }            cur=cur->next;        }        cur->next=pHead1?pHead1:pHead2;        return head->next;    }};

解法二,递归:  

class Solution {public:    ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {        if(!pHead1)            return pHead2;        if(!pHead2)            return pHead1;        if(pHead1->val<=pHead2->val)        {            pHead1->next=Merge(pHead1->next,pHead2);            return pHead1;        }        else{            pHead2->next=Merge(pHead1,pHead2->next);            return pHead2;        }    }};

到此,相信大家对“C++怎么合并两个排序的链表”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: C++怎么合并两个排序的链表

本文链接: https://lsjlt.com/news/301448.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++怎么合并两个排序的链表
    本篇内容主要讲解“C++怎么合并两个排序的链表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么合并两个排序的链表”吧!题目描述:输入两个递增的链表,单个链表的长度为n,合并这两个链表并使...
    99+
    2023-06-22
  • C++解决合并两个排序的链表问题
    目录题目描述:示例:解题思路:测试代码:题目描述: 输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围: n为0~1000,节点值为...
    99+
    2024-04-02
  • C/C++合并两个升序链表的方式
    目录合并两个升序链表算法的思想代码实现+注释合并K个升序链表(递归方法)归并的思想先来看合并两个有序链表的代码我们再来看合并K个链表的递归方法合并两个升序链表 算法的思想 1.需要合...
    99+
    2024-04-02
  • c++如何合并K个排序链表
    这篇“c++如何合并K个排序链表”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“c++如何合并K个排序链表”文章吧。合并&nb...
    99+
    2023-06-02
  • python怎么合并两个列表并排序
    在Python中,可以使用`+`操作符来合并两个列表,并使用`sorted()`函数对合并后的列表进行排序。下面是一个示例代码:``...
    99+
    2023-08-15
    python
  • TypeScript合并两个排序链表的方法详解
    目录前言思路分析实现代码测试用例示例代码前言 给定两个递增排序的链表,如何将这两个链表合并?合并后的链表依然按照递增排序。本文就跟大家分享一种解决方案 思路分析 经过前面的学习,我们...
    99+
    2024-04-02
  • leetcode23. 合并K个排序链表
    1. 题目描述合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4...
    99+
    2023-06-03
  • java怎么合并两个数组并排序
    你可以使用Java中的Arrays类的sort()方法来对两个数组进行合并和排序。以下是一个示例代码:```javaimport j...
    99+
    2023-09-29
    java
  • C++怎么实现合并k个有序链表
    本篇内容介绍了“C++怎么实现合并k个有序链表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Merge k Sorted Lists 合并k...
    99+
    2023-06-19
  • 带你了解如何用C++合并两个有序链表
    目录将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。思路代码链表Listnode详细介绍总结将两个升序链表合并为一个新的 升序 链表并...
    99+
    2024-04-02
  • java怎么合并两个int数组并排序
    要合并两个int数组并排序,可以按照以下步骤进行: 创建一个新的int数组,长度为两个输入数组的长度之和。 将第一个数组的元素复制...
    99+
    2023-10-27
    java
  • 怎么用C++实现合并k个有序链表
    本篇内容主要讲解“怎么用C++实现合并k个有序链表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C++实现合并k个有序链表”吧!Merge k Sorted Lists 合并k个有序链表M...
    99+
    2023-06-20
  • 利用Java怎么合并递增排序链表
    这期内容当中小编将会给大家带来有关利用Java怎么合并递增排序链表,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不...
    99+
    2023-05-31
    java ava
  • c++如何实现归并两个有序链表
    目录归并两个有序链表1、题目描述2、设计思路将两个有序链表合并为一个新的有序链表并返回示例在力扣上的提交结果归并两个有序链表 1、题目描述 利用基础题里构建的单链表类创建两个有序的整...
    99+
    2024-04-02
  • mysql怎么合并两个表
    mysql怎么合并两个表?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql合并两个表的方法:首先确认这两张表的字段必...
    99+
    2024-04-02
  • oracle怎么合并两个表
    在Oracle中,可以使用INSERT INTO SELECT语句来合并两个表。假设有两个表:table1和table2,它...
    99+
    2023-08-25
    oracle
  • C++实现LeetCode(23.合并k个有序链表)
    [LeetCode] 23. Merge k Sorted Lists 合并k个有序链表 Merge k sorted linked lists and retu...
    99+
    2024-04-02
  • php怎么合并两个数组并从小到大排序
    合并并排序的步骤:1、利用array_merge()函数合并两个数组,语法“array_merge(数组1,数组2)”,会返回一个合并后的数组;2、使用asort()或sort()函数对合并数组进行升序排列,元素会从小到大进行排序,语法“s...
    99+
    2022-08-08
    php数组 php
  • C++怎么实现链表排序
    本篇内容主要讲解“C++怎么实现链表排序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么实现链表排序”吧!链表排序Sort a linked list in O(n ...
    99+
    2023-06-20
  • Java有序链表怎么合并
    这篇文章主要介绍了Java有序链表怎么合并的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java有序链表怎么合并文章都会有所收获,下面我们一起来看看吧。问题将两个升序链表合并为一个新的升序链表并返回。新链表是通...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作