题解 | #合并k个已排序的链表#

合并k个已排序的链表

http://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6

分治

class Solution {
public:
    ListNode *merge(vector<ListNode *> &lists, int l, int r) {
        if (l == r) return lists[l];
        ListNode *l1, *l2, *ret = nullptr, **rret;
        rret = &ret;
        int mid = (l + r) >> 1;
        l1 = merge(lists, l, mid);
        l2 = merge(lists, mid + 1, r);
        while (l1 != nullptr && l2 != nullptr) {
            ListNode **tmp = l1->val < l2->val ? &l1 : &l2;                
            *rret = *tmp;
            rret = &((*rret) -> next);
            *tmp = (*tmp) -> next;
        }
        *rret = l1 != nullptr ? l1 : l2;
        return ret;
        
    }
    ListNode *mergeKLists(vector<ListNode *> &lists) {
        if (lists.size()) return merge(lists, 0, lists.size() - 1);
        return nullptr;
    }
};
全部评论

相关推荐

2025-12-16 22:45
已编辑
电子科技大学 活动运营
Rain_Codin...:简历感觉有点乱了而且一股AI味,AI简历的一个特点就是废话很多,一个点能分成四个点来讲,可以仔细优化一下。 btw,手机看简历不好看出来,可以把电脑上的简历截图放出来。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务