Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* mergeKLists(vector<ListNode*>& lists) { if(lists.empty()){ return nullptr; } ){ lists.push_back(mergeTwoLists(lists[], lists[])); lists.erase(lists.begin()); lists.erase(lists.begin()); } return lists.front(); } ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { if(l1 == nullptr){ return l2; } if(l2 == nullptr){ return l1; } if(l1->val <= l2->val){ l1->next = mergeTwoLists(l1->next, l2); return l1; } else{ l2->next = mergeTwoLists(l1, l2->next); return l2; } } };