首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

合并两个排序的链表

前言 给定两个递增排序的链表,如何将这两个链表合并?合并后的链表依然按照递增排序。本文就跟大家分享一种解决方案,欢迎各位感兴趣的开发者阅读本文。...同样的,这个问题也可以用双指针的思路来实现: p1指针指向链表1的头节点 p2指针指向链表2的头节点 声明一个变量存储合并后的链表,比对两个指针指向的节点值大小: 如果p1指针指向的节点值比p2指向的值小...,合并后的链表节点就取p1节点的值,p1指针继续向前走,进行下一轮的比对 如果p2指针指向的节点值比p1指向的值小,合并后的链表节点就取p2节点的值,p2指针继续向前走,进行下一轮的比对 当p1节点指向...null时,合并后的链表节点就为p2所指向的链表节点;当p2节点指向null时,合并后的链表节点就为p1所指向的链表节点。...1 声明一个变量pMergedHead用于存储合并后的链表头节点 如果当前链表1的节点值小于链表2的节点值 pMergedHead的值就为链表2的节点值 pMergedHead的下一个节点值就为链表1的下一个节点和链表

84710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    合并两个排序的链表

    题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如下图中的链表1和链表2,则合并之后的升序链表如链表3所示。...注:链表1和链表2是两个递增排序的链表,合并这两个链表得到升序链表为链表3. 首先分析合并两个链表的过程。我们的分析从合并两个链表的头结点开始。...在两个链表中剩下的结点依然是排序的,因此合并这两个链表的步骤和前面的步骤是一样的。我们还是比较两个头结点的值。...当我们得到两个链表中值较小的头结点并把它连接到已经合并的链表之后,两个链表剩余的结点依然是排序的,因此合并的步骤和之前的步骤是一样的。这就是典型的递归的过程,可以定义递归函数来完成者以合并过程。...同样,当输入的第二个链表的头结点是空指针时,我们把它和第一个链表合并得到的结果就是第一个链表。如果两个链表都是空链表,合并的结果是得到一个空链表。

    1.1K80

    合并两个有序的链表

    题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。...这种链表 是需要我们遍历链表的 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 是否需要头结点 : 因为我们 目前的 头结点是不能确定的 当l1.val<l=2.val...时 头结点指向l1 当l1.val>l2.val 时 头结点指向l2 因此我们需要一个头结点指向 头结点的next 指向l1或l2 我们还需要判断边界条件 两个链表不一定一样长 有可能l1遍历完了...l2还没遍历完 或者l2遍历完了 l1还没遍历完 此时我们需要让 头节点的next指向链表剩余的元素 代码实现 class Solution { public ListNode mergeTwoLists...=null){ //把l1剩余的加入到cur cur.next=l1; } if(l2!

    37710

    【Python】集合 set ③ ( 集合常用操作 | 清空集合元素 | 获取两个集合的差集 | 消除两个集合的差集 | 获取两个集合的并集 | 计算集合元素数量 | 集合遍历 )

    执行结果 : names = {'Tom', 'Jerry', 'Jack'}, type = names = set(), type = 二、获取两个集合的差集...- 集合 A 有集合 B 没有 获取两个集合的差集 : 集合 A 有集合 B 没有 集合A.difference(集合B) 该函数会得到一个新集合 , 原来的 集合 A 和 集合 B 都不变 ; 代码示例...2, 3} {2, 3, 4} {1} 三、消除两个集合的差集 - 集合 A 中删除与集合 B 相同的元素 消除两个集合的差集 : 在集合 A 中删除与集合 B 相同的元素 ; 集合A.difference_update...消除参照集合 不变 执行结果 : {1} {2, 3, 4} 四、获取两个集合的并集 - 集合 A 与集合 B 合并 获取两个集合的并集 : 将 集合 A 与集合 B 中的元素合并到一个新集合中 ; 集合...A.union(集合B) 该函数会得到一个新集合 , 原来的 集合 A 和 集合 B 都不变 ; 代码示例 : 合并时 , 如果有重复元素 , 自动去重 , 每个元素只保留一个 ; """ 集合 代码示例

    32530

    算法-合并两个排序的链表

    题目: 输入两个递增排序的链表,合并着两个链表并使新链表中的结点仍然是按照递增顺序的。例如输入的链表1和链表2如下,合并后的为链表3。...解题思路: 首先可以确定的是,链表1和链表2本身就是递增的,所以合并的过程可以从链表1,2的头结点开始,先比较1,2的头结点中值的大小,将小的值的结点(比如为链表1头结点)作为合并后的链表(链表3)...的头结点。...个人感觉值得注意的地方有下面几个: (1)如果链表1,2为空,要考虑代码的鲁棒性。 (2)要考虑链表1,2中某结点的数值相等的情况,这个在else中包含了。 ? (3)递归调用何时退出?...return pHead1; 这就是这个代码很巧妙的地方,往往使一行代码两个甚至多个作用,我们举这样的例子: 链表1 : 1 3 链表2 : 2 4 首先执行

    854100

    合并两个排序的单链表

    【题目】 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是依照递增排序的。...---- 【分析】 合并单链表,须要找到头结点,对照两个链表头结点后,确定头结点,再确定头结点下一个结点,循环递归的如前面一样操作确定每一个结点位置,同一时候考虑边界条件,假设两个链表为空。...则肯定无需合并了,就是空链表,假设一个链表为空,还有一个不为空,则返回不为空的链表。...详细分析流程能够看以下的样例: ---- 【測试代码】 #include #include #include typedef int data_type...printf("\n"); node_t *merge_list = merge(list1->node_next, list2->node_next); printf("合并单链表顺序为

    43510

    合并两个排序的单链表

    1 问题 关于链表的合并,常见的类型有两种: 直接合并,没有什么规则: 将多个链表头尾相连合并成一个链表 有序链表合并成有序链表: 两个有序链表合并成一个有序链表。...这里我们将要解决的问题是有序列表的合并,在上课的时候我们学习了如何直接合并两个单链表,那么如果在合并的同时还要注意顺序问题的话该如何解决呢?本篇周博客将讨论此问题。...2 方法 (1)判断空链表的情况,只要有一个链表为空,那答案必定就是另一个链表了,就算另一个链表也为空。 (2)新建一个空的表头后面连接两个链表排序后的节点,两个指针分别指向两链表头。...(3)遍历两个链表都不为空的情况,取较小值添加在新的链表后面,每次只把被添加的链表的指针后移。...直接连在后面 if pHead1: cur.next = pHead1 else: cur.next = pHead2 #返回值去掉表头 # return head.next 3 结语 我们针对排序单链表的合并问题

    10710

    Javascript如何合并两个对象的属性

    ECMAScript 2018标准方法 ECMAScript2018推荐使用…来实现合并对象,实现代码如下: let merged = {...obj1, ...obj2}; /** 合并对象的数量没有限制...const allRules = {...obj1, ...obj2, ...obj3}; ECMAScript 2015(ES6)标准方法 ES6可以使用Object.assign方法来实现对象属性的合并...,实现代码如下: Object.assign(obj1, obj2); /** 合并对象的数量没有限制 * 所有的对象都合并到第一个对象 {} 中 * 只有第一个参数会改变并返回 * 后面的对象会覆盖前面的对象的属性...) { obj1[attrname] = obj2[attrname]; } 上面的代码会将obj2的所有属性添加到obj1对象中,如果你想到的是obj1未修改的,这可能不是你想要的结果。...,来合并多个对象的属性,并将第一个参数返回。

    4.1K50

    Git-合并两个不同的仓库

    背景:由于拆分微前端,需要将最新代码合并到已经拆分的微前端项目,即需要将 2 个项目合并。...1.git 合并两个不同的仓库必备知识 1>.列出本地已经存在的分支 git branch 2>.查看当前 git 关联的远程仓库 git remote -v 3>.解除当前仓库关联的远程仓库 git...# 《常见的 git 命令》 2.实际操作 1.项目仓库 现在有两个仓库 [leader/kkt](https://www.leader755.com) (主仓库)和 [leader/kkt-next]...(https://www.leader7555.com)(子仓库) 我们需要将 kkt-next 仓库合并到 kkt 并保留 kkt-next 的所有提交内容。...# 请执行下面命令 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ git merge other --allow-unrelated-histories 在合并时有可能两个分支对同一个文件都做了修改,这时需要解决冲突

    2.4K40

    两个非递增的有序链表的合并

    两个非递增的有序顺序表的合并 一、问题引入: 已知两个带头结点的非递增有序的单链表A和B,设计算法将两个单链表合并成一个非递增有序的单链表C.要求单链表C仍使用原来两个链表的存储空间 二、分析 两个链表都是有序的...,我们直接将A的头节点作为结果集链表的头节点,用pa和pb作为A和B的工作指针,循环比较pa和pb的数据域,将较大值接入结果集链表的尾部就行,如果俩个链表的长度不一致,最后会有一个链表剩余,将剩余的所有结点直接接在结果集链表的尾部就...typedef struct LNode{ ElemType data; //数据域 struct LNode *next; //指针域 }LNode,*LinkList; //两个非递增的链表合并...,要求合并后的链表元素也是非递增顺序,且不使用额外的空间。...q=r; } } //两个非递增的链表合并,要求合并后的链表元素也是非递增顺序,且不使用额外的空间。

    86310

    LeetCode004|合并两个排序的链表

    0x01,题目简述 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。...0x02,示例 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 0x03,题解思路 循环判断两个链表是否为空,若其中一个为空,则直接返回另外一个链表,因为题意链表元素的大小是有序的...0x04,题解程序 0x05,总结 这周就没怎么去写关于技术文的文章了,一个是觉得适度放松和写作对自己有好处,没有必要将自己处于一个非常忙碌的状态,今天写的这篇文章主要还两个链表的操作,其实抛开链表的前后节点直接的连接关系...,链表就是数组的一个体现,以前的我是一个处于很忙碌的状态,从早忙到晚,最近看了一些文章和一些受启发的短视频慢慢调整了自己的状态,或许最大的就是自己心态的调整,因为上学时心心念想要学习但一直未学习的内容终于在这段时间内完成了...,所以现在自己心里可以慢慢去做自己想做的事情了,其它的不多说了,这篇文章如果可以帮助到需要的人就好,其实还是对自己帮助最大,目前的文章内容基本上都是自己在整理已经完成的内容,做下内容的沉淀

    31630

    合并两个不相关的Git仓库

    大致是这样的场景:有两个仓库,一个Git仓库,一个SVN仓库,都是非空的。现在要把SVN仓库中的内容合入Git仓库中,并保留提交记录。听起来有点奇怪,不过现实中的问题总是千奇百怪加变态。...合并两个Git仓库。 简单起见,笔者以test1、test2为例,讲解演示将test2仓库合并到test1中。...思路 要想将test2合入test1中,那么可以将test2伪造成test1仓库的一个分支,然后合并到test1仓库中(的指定分支,本文为master) Action 1. clone两个仓库,放入同一个目录中...git merge test2 --allow-unrelated-histories 9. push到test1仓库 git push 参考文档 《合并两个git仓库》:http://blog.csdn.net.../gouboft/article/details/8450696 《如何用 Git 合并两个库,并保留提交历史》:http://www.cnblogs.com/AP0904225/p/5811687.html

    1.1K50
    领券