多个有序链表合并成一个有序链表的C++递归实现

本文介绍了如何使用C++递归方法将多个有序链表合并为一个有序链表。核心思路是将多个链表视为二维有序结构,每次选择当前维度最小元素并移至最大维度,递归处理剩余链表。
摘要由CSDN通过智能技术生成

 多个有序链表合并成一个有序链表的C++递归实现

主体思想:

1.多个有序链表看成是一个二维链表,此二维链表在 y 轴方向是有序的,x轴方向是无序的

2.在x 轴方向(x=0),找出此维度最小的元素(可以输出了),

3.将此元素置于x 轴最大的地方,重新将 y=x 的这一条有序链表 沿 y 轴方向移动 -1 (当此链表没有元素 存在 y>= 0了,删除此一维链表).

4.重复在 x=0 这一层找到最小的元素,重复 3、4 。(可以递归了)

手动图片讲述,小节点内有数字,1是初始状态,2\3循环,(2的过程在 FindMin() 中,图片简化过程)

注意:

1.递归的判断条件  --  二维链表是否为空

2.初始化 vector 的时候,请注意不要仅初始化 vector <ListNode*> *   , 这个是仅初始化了一个指针,并没有初始化 vector ,我花了很久来调这个较低

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值