java工程部署linux基本操作命令
阿新 • • 發佈:2021-01-29
技術標籤:刷題
難度:中等。
重點在連結串列的操作,不要搞混了。
正確解法:
/**
* Definition for singly-linked list.
* 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) {}
* };
*/
class Solution {
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
int n = lists.size();
if(n == 0)return NULL;
if(n == 1)return lists[0];
int is_empty = 0;
vector<ListNode*> temp = lists;
int flag = 1;
ListNode* list, *result;
int it = 0;
while(is_empty < n){
int now_list = 0;
int now_num = 100001;
for(int i = 0; i < n; i++){
if(temp[i]){
int k = temp[i]->val;
if(now_num > k){
now_num = k;
now_list = i;
}
}
else if(it == 0){
is_empty++;
}
}
if(is_empty == n)return NULL;
if(flag){
list = temp[now_list];
result = temp[now_list];
flag = 0;
}
else{
list->next = temp[now_list];
list = list->next;
}
if(!temp[now_list]->next){
is_empty++;
}
temp[now_list] = temp[now_list]->next;
if(it == 0)it = 1;
}
return result;
}
};