Leetcode

Merge Two Sorted Lists / leetcode / c++

치킨먹고싶어요 2022. 6. 1. 19:37
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        ListNode* head = new ListNode();
        ListNode* point = new ListNode();
        
        // for head
        if (list1 or list2) {
            if (list1 and list2) {
                if (list1->val < list2->val) {
                    head->next = list1;
                    point->next = list1;
                    list1 = list1->next; 
                }
                else {
                    head->next = list2;
                    point->next = list2;
                    list2 = list2->next; 
                }
            }
            else if (list1) {
                return list1;
            }
            
            else {
                return list2;
            }
        }
        
        // solve
        while (list1 or list2) {
            if (list1 and list2) {
                if (list1->val < list2->val) {
                    point->next->next = list1;
                    point->next = list1;
                    list1 = list1->next; 
                }
                else {
                    point->next->next = list2;
                    point->next = list2;
                    list2 = list2->next; 
                }
            }
            else if (list1) {
                point->next->next = list1;
                break;
            }
            else {
                point->next->next = list2;
                break;
            }
        }
        return head->next;
    }
};
cs

풀이:

1. 시작점인 head를 저장해 줍니다.

 

2. point->next를 이용하여 노드의 방향을 조절합니다.