【力扣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;
    }
};
相关推荐
旺仔老馒头.1 天前
【数据结构与算法】手撕排序算法(二)
c语言·数据结构·算法·排序算法
好学且牛逼的马1 天前
【Hot100 | 2 LeetCode49 字母异位词分组问题】
算法
2301_795167201 天前
Rust 在内存安全方面的设计方案的核心思想是“共享不可变,可变不共享”
算法·安全·rust
czhc11400756631 天前
Java117 最长公共前缀
java·数据结构·算法
java 乐山1 天前
蓝牙网关(备份)
linux·网络·算法
云泽8081 天前
快速排序算法详解:hoare、挖坑法、lomuto前后指针与非递归实现
算法·排序算法
数字化脑洞实验室1 天前
智能决策算法的核心原理是什么?
人工智能·算法·机器学习
流烟默1 天前
机器学习中拟合、欠拟合、过拟合是什么
人工智能·算法·机器学习
Brianna Home1 天前
现代C++:从性能泥潭到AI基石
开发语言·c++·算法
再卷也是菜1 天前
算法基础篇(10)递归型枚举与回溯剪枝
算法·深度优先·剪枝