每日一题 LCR 078. 合并 K 个升序链表

LCR 078. 合并 K 个升序链表

使用二分法就可以解决

cpp 复制代码
class Solution {
public:
    ListNode* mergeKLists(vector<ListNode*>& lists) {

        int n = lists.size();

        if(n == 0){
            return nullptr;
        }
        ListNode* ans ;

        ans = binMerge(lists,0,n-1);
        return ans;
    }

    ListNode* binMerge(vector<ListNode*> &lists,int l,int r ){
        //cout<<l<<" "<<r<<endl;
        if(l > r){
            return nullptr;
        }
        if(l == r){
            return lists[l] ;
        }
        int mid = (l+r)/2;
        ListNode* ll = binMerge(lists,l,mid);
        ListNode* rr = binMerge(lists,mid+1,r);

        return mergeListTwo(ll,rr);
    }

    ListNode* mergeListTwo(ListNode* l, ListNode* r){
        
        ListNode* dummy = new ListNode(0);
        ListNode* h = dummy;
        while(l && r){
            if(l->val > r->val){
                h->next = r;
                r = r->next;
            }else{
                h->next = l;
                l = l->next;
            }
            h = h->next;
        }
        if(l){
            h->next = l;
        }
        if(r){
            h->next = r;
        }
        return dummy->next;
    }
};
相关推荐
এ᭄画画的北北11 小时前
力扣-347.前K个高频元素
算法·leetcode
亮亮爱刷题14 小时前
算法提升之树上问题-(LCA)
数据结构·算法·leetcode·深度优先
火车叨位去194914 小时前
力扣top100(day03-01)--二叉树 03
算法·leetcode·职场和发展
岁忧14 小时前
(LeetCode 每日一题) 1780. 判断一个数字是否可以表示成三的幂的和 (数学、三进制数)
java·c++·算法·leetcode·职场和发展·go
胖咕噜的稞达鸭17 小时前
数据结构---关于复杂度的基础解析与梳理
c语言·数据结构·算法·leetcode
এ᭄画画的北北1 天前
力扣-5.最长回文子串
算法·leetcode
zyd09151 天前
代码随想录Day50:图论(图论理论、深度搜索理论、所有可达路径、广度搜索理论)
java·数据结构·算法·leetcode·图论
现在,此刻1 天前
leetcode 11. 盛最多水的容器 -java
java·算法·leetcode
火车叨位去19492 天前
力扣top100(day01-05)--矩阵
算法·leetcode·矩阵
冬夜戏雪2 天前
java学习 leetcode 二分查找 图论
java·学习·leetcode