LeetCode) 21. Merge Two Sorted Lists

·2021년 11월 10일
0

Leet_code(Easy)

목록 보기
7/20

연결 리스트 두 개를 잇는 문제.

Language: C

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */

struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
    struct ListNode* newList;
    struct ListNode* head;
    
    //l1이랑 l2 모두 비어있을 때
    if(l1 == NULL && l2 == NULL) {
        return NULL;
    }
    
    //l1이나 l2 하나가 비어있을 때
    if(l1 != NULL && l2 == NULL) {
        return l1;
    }
    
    if(l1 == NULL && l2 != NULL) {
        return l2;
    }
    
    // 첫 수 비교 (l2가 더 작을 때)
    if(l1->val > l2->val) {
        newList = l2;
        l2 = l2->next;
    } else {
        newList = l1;
        l1 = l1->next;
    }
    
    head = newList;    
    while(l1 != NULL && l2 != NULL) {
        if(l1->val > l2->val) {
            newList->next = l2;
            newList = l2;
            l2 = l2->next;
        } else {
            newList->next = l1;
            newList = l1; 
            l1 = l1->next;
        } 
    }
    
    if(l1 != NULL) {
        newList->next = l1;
    }
    
    if(l2 != NULL) {
        newList->next = l2;
    }
    
    return head;
}

재작년 이맘 때 즈음 부터 작년 초까지 정말 열심히 공부하던 자료구조.
그걸 활용한 문제를 풀어서 오랜만에 반가웠고 내가 어떤 부분에서 부족했구나를 복기하는 계기가 된 문제!!
오랜 만에 씨로 풀었다 ㅎㅎ
무려 런타임 0ms!!!!!

profile
HAPPY !

0개의 댓글