코딩테스트 준비/leetcode

21. Merge Two Sorted Lists

MAKGA 2021. 9. 22. 19:59
320x100

https://leetcode.com/problems/merge-two-sorted-lists/

 

Merge Two Sorted Lists - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

2개의 정수 목록이 주어졌을 때, 두 리스트를 오름차순대로 합친 목록을 만들어 반환하는 문제다.

별달리 고려할만한 case는 없었던 것 같다.

 

/**
 * 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* addNode(ListNode* head, ListNode* node) {
        head->next = node;
        return head->next;
    }
    
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        if (!l1 && !l2)
            return nullptr;
        
        if (l1 && !l2)
            return l1;
        
        if (!l1 && l2)
            return l2;
        
        ListNode* ret = new ListNode(0);
        ListNode* iter = ret;
        
        while(l1 || l2)
        {
            if (l1 && l2)
            {
                iter = addNode(iter, l1->val > l2->val ? l2 : l1);
                l1->val > l2->val ? l2 = l2->next : l1 = l1->next;
            }
            else if (l1 && !l2)
            {
                iter = addNode(iter, l1);
                l1 = l1->next;
            }
            else if (!l1 && l2)
            {
                iter = addNode(iter, l2);
                l2 = l2->next;
            }
        }
        
        return ret->next;
    }
};

 

320x100

'코딩테스트 준비 > leetcode' 카테고리의 다른 글

40. Combination Sum II  (0) 2021.11.09
39. Combination Sum  (0) 2021.11.07
20. Valid Parentheses  (0) 2021.09.21
90. Subsets II  (0) 2021.09.01
82. Remove Duplicates from Sorted List II  (0) 2021.08.29