【力扣hot100题】(033)合并K个升序链表

想法十分简单粗暴但有效,将首个链表头作为起点,然后依次遍历各个链表,每个链表再将节点依次插入首个链表中。

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* mergeKLists(vector<ListNode*>& lists) {
        if(lists.size()==0) return nullptr;
        ListNode* result=new ListNode(0,lists[0]);
        for(int i=1;i<lists.size();i++){
            ListNode* l=lists[i];
            ListNode* r=result->next;
            ListNode* pre=result;
            while(l){
                ListNode* ln=l->next;
                bool b=0;
                while(r){
                    if(r->val>=l->val){
                        b=1;
                        pre->next=l;
                        l->next=r;
                        pre=l;
                    }
                    if(b==1) break;
                    pre=r;
                    r=r->next;
                }
                if(b==0){
                    pre->next=l;
                    break;
                }
                l=ln;
            }
        }
        return result->next;
    }
};
相关推荐
LYFlied10 分钟前
【每日算法】LeetCode 17. 电话号码的字母组合
前端·算法·leetcode·面试·职场和发展
式51636 分钟前
线性代数(八)非齐次方程组的解的结构
线性代数·算法·机器学习
橘颂TA2 小时前
【剑斩OFFER】算法的暴力美学——翻转对
算法·排序算法·结构与算法
叠叠乐2 小时前
robot_state_publisher 参数
java·前端·算法
hweiyu002 小时前
排序算法:冒泡排序
算法·排序算法
brave and determined2 小时前
CANN训练营 学习(day9)昇腾AscendC算子开发实战:从零到性能冠军
人工智能·算法·机器学习·ai·开发环境·算子开发·昇腾ai
Dave.B2 小时前
用【vtk3DLinearGridCrinkleExtractor】快速提取3D网格相交面
算法·3d·vtk
一起养小猫2 小时前
LeetCode100天Day1-字符串匹配与Z字形变换
java·leetcode
yaoh.wang3 小时前
力扣(LeetCode) 1: 两数之和 - 解法思路
python·程序人生·算法·leetcode·面试·跳槽·哈希算法
Code Slacker3 小时前
LeetCode Hot100 —— 滑动窗口(面试纯背版)(四)
数据结构·c++·算法·leetcode