2023-08-12力扣每日一题-暴力hard
链接:
23. 合并 K 个升序链表
题意:
如题
解:
时间668ms击败 5.00%使用 C++ 的用户/内存12.37mb击败 87.96%使用 C++ 的用户
循环选择插入新链表的节点,纯正的暴力,不过空间用得少
最坏应该是1E4*1E4,没想到能过,数据弱了?
PS:函数给的是引用,说明应该拷贝一份来修改,不过无所谓了
实际代码:
#include<bits/stdc++.h>
using namespace std;
struct ListNode
{int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode *next) : val(x), next(next) {}
};
ListNode* mergeKLists(vector<ListNode*>& lists)
{ListNode* head=nullptr,* insertor=nullptr;int lgrow=lists.size();while(true){ListNode* temp=nullptr;for(auto &list:lists){if(list){if(temp==nullptr) temp=list;else{if(temp->val>list->val) temp=list;}}}for(auto &list:lists){if(list==temp) list=list->next;}if(temp==nullptr) break;if(head==nullptr){head=temp;insertor=temp;}else{insertor->next=temp;insertor=insertor->next;}}return head;
}
int main()
{return 0;
}
限制:
k == lists.length
0 <= k <= 10^4
0 <= lists[i].length <= 500
-10^4 <= lists[i][j] <= 10^4
lists[i]
按 升序 排列lists[i].length
的总和不超过10^4