-
[LeetCode] Merge Two Sorted Lists (C++)알고리즘 문제풀이/LeetCode 2021. 3. 4. 23:06
leetcode.com/problems/merge-two-sorted-lists/
정렬되어 있는 두개의 리스트가 주어지고, 이를 오름차순으로 병합하는 문제였습니다. 포인터를 이해하고 잘 사용할 수 있는지가 중요했습니다.
/** * 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* mergeTwoLists(ListNode* l1, ListNode* l2) { // example 2,3에 대한 조건 처리 if(l1 == NULL) return l2; if(l2 == NULL) return l1; // 리턴할 때 사용할 head를 가리키는 리스트 ListNode* head = NULL; if(l1->val <= l2->val) { head = l1; l1 = l1->next; } else { head = l2; l2 = l2->next; } // 머지 리스트 정의 ListNode* p = head; while(l1 && l2) { if(l1->val <= l2->val) { p->next = l1; l1 = l1->next; } else { p->next = l2; l2 = l2->next; } p = p->next; } // l1, l2에 남은 노드 처리 if(l1) p->next = l1; if(l2) p->next = l2; return head; } };
'알고리즘 문제풀이 > LeetCode' 카테고리의 다른 글
[LeetCode] Linked List Cycle (C++) (0) 2021.03.09 [LeetCode] Maximum Depth of Binary Tree (C++) (0) 2021.03.06 [LeetCode/easy] Single Number (C++) (0) 2021.02.08 [LeetCode/easy] Symmentric-Tree (C++) (0) 2021.02.08 [LeetCode/easy] Climbing-Stairs (C++) (0) 2021.02.08