문제
두 개의 정렬된 연결 목록 list1과 list2의 헤드가 제공됩니다.
두 개의 목록을 하나의 정렬된 목록으로 병합합니다. 목록은 처음 두 목록의 노드를 연결하여 만들어야 합니다.
병합된 연결 목록의 헤드를 반환합니다.
Example 1:
Input: list1 = [1,2,4], list2 = [1,3,4]
Output: [1,1,2,3,4,4]
Example 2:
Input: list1 = [], list2 = []
Output: []
Example 3:
Input: list1 = [], list2 = [0]
Output: [0]
제출코드
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} list1
* @param {ListNode} list2
* @return {ListNode}
*/
var mergeTwoLists = function (l1, l2) {
let newList = new ListNode(0);
let headOfNewList = newList;
while (l1 != null && l2 != null) {
if (l1.val < l2.val) {
newList.next = l1;
l1 = l1.next;
} else {
newList.next = l2;
l2 = l2.next;
}
newList = newList.next;
}
if (l1 == null) {
newList.next = l2;
}
else {
newList.next = l1;
}
return headOfNewList.next;
};
문제풀이
이번 문제는 직접 풀지 못하였다. 스터디 조원들과 정보를 공유하고 다른분들이 작성한 코드를 해석해보았다.
LinkedList에 노드가 포함되어 있는 동안 실행되며 각 반복에서 사용 가능한 두 노드를 비교하고 더 낮은 노드를 선택하고 마지막으로 해당 LinkedList를 다음 항목으로 이동,루프가 끊어지면 LinkedList가 비어 있지 않은 나머지 요소가 새 LinkedList의 끝에 추가된다.
해당문제는 작성된 코드를 보며 이해를 하는대는 큰 어려움이 있지는 않았다. 하지만 아무것도 없는상태에서 해당 코드를 작성하는 것은 아직 나에겐 힘들다. 해당부분에 집중적 공부가 더 필요하다.
'Computer Science > 코딩테스트' 카테고리의 다른 글
LeetCode #26 Remove Duplicates from Sorted Array (0) | 2022.07.12 |
---|---|
LeetCode #5 Longest Palindromic Substring (0) | 2022.07.12 |
LeetCode #20 Valid Parentheses (0) | 2022.07.11 |
LeetCode #14 Longest Common Prefix (0) | 2022.07.11 |
LeetCode #13 Roman to Integer (0) | 2022.07.11 |