LeetCode-23 - 정렬 체인 테이블 K 개 결합 - C 언어
typedef struct ListNode Node;
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
struct ListNode head;
head.next = NULL;
struct ListNode *rear = &head;
struct ListNode *node = NULL;
while(l1 && l2){
rear->next = l1->val < l2->val ? l1 : l2;
if(l1->val < l2->val){
l1 = l1->next;
}else{
l2 = l2->next;
}
rear = rear->next;
}
if(l1){
rear->next = l1;
}
if(l2){
rear->next = l2;
}
return head.next;
}
struct ListNode* mergeKLists(struct ListNode** lists, int listsSize) {
if(!listsSize){
return NULL;
}
if(listsSize == 1){
return lists[0];
}
int mid = listsSize / 2;
Node *l1 = mergeKLists(lists, mid);
Node *l2 = mergeKLists(lists+mid, listsSize-mid);
return mergeTwoLists(l1, l2);
}
방법2: 비귀속 분치 비귀속 방법은 원래의 수조를 사용하여 분치 후 얻은 임시 체인 헤드를 수조에 넣고 모든 순환 수조의 길이를 반으로 줄이고 마지막에 원소에 도착할 때 되돌아오는 체인 헤드이다.
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
typedef struct ListNode Node;
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
struct ListNode head;
head.next = NULL;
struct ListNode *rear = &head;
struct ListNode *node = NULL;
while(l1 && l2){
rear->next = l1->val < l2->val ? l1 : l2;
if(l1->val < l2->val){
l1 = l1->next;
}else{
l2 = l2->next;
}
rear = rear->next;
}
if(l1){
rear->next = l1;
}
if(l2){
rear->next = l2;
}
return head.next;
}
struct ListNode* mergeKLists(struct ListNode** lists, int listsSize) {
int left_size = listsSize;
int i, k;
int cnt;
if(!listsSize){
return NULL;
}
while(left_size>1){
k = left_size;
cnt = (k+1)/2;
for(i=0; i= k ? NULL : lists[2*i+1]));
}
left_size = (left_size+1)/2;
}
return lists[0];
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.