题解 | #合并k个已排序的链表#
合并k个已排序的链表
https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param lists ListNode类vector * @return ListNode类 */ ListNode* mergeKLists(vector<ListNode*>& lists) { ListNode* rhead = nullptr; ListNode* rtail = nullptr; while(true) { int minTndex = -1;//让最小位置初始为-1 int i = lists.size(); while(i--) { if(lists[i] != nullptr)//首先判断数组当前位置的节点是否为空 { if(minTndex == -1)//说明lists中还没有插入数据 { minTndex = i; } else if(lists[i]->val < lists[minTndex]->val) { minTndex = i; } } } if(minTndex == -1)//如果遍历一遍以后最小位置还是空的, 那么说明数组中所有的位置都是空的 { return rhead; } if(rhead == nullptr) { rhead = rtail = lists[minTndex]; } else { rtail->next = lists[minTndex]; rtail = rtail->next; } lists[minTndex] = lists[minTndex]->next; } } };