코테준비 - Merge k Sorted Lists

정상화·2023년 2월 26일

LeetCode

목록 보기
22/222

Merge k Sorted Lists


class Solution {
public:
    struct cmp {
        bool operator()(ListNode *a, ListNode *b) {
            return a->val > b->val;
        }
    };

    ListNode *mergeKLists(vector<ListNode *> &lists) {
        vector<ListNode *> result;
        priority_queue<ListNode *, vector<ListNode *>, cmp> minQ;
        int lsSz = lists.size();

        for (int i = 0; i < lsSz; i++) {
            if(lists[i]==nullptr) continue;
            minQ.push(lists[i]);
        }

        while (!minQ.empty()) {
            auto min = minQ.top();
            minQ.pop();
            result.push_back(min);
            min = min->next;
            if (min != nullptr)minQ.push(min);
        }

        for (auto it = result.begin(); it != result.end(); it++) {
            if (next(it) == result.end())
                (*it)->next = nullptr;
            else (*it)->next = *next(it);
        }

        return result.empty() ? NULL : result.front();
    }
};
profile
백엔드 희망

0개의 댓글