LeetCode 공부 - Intersection of Two Linked Lists

LeetCode(160) - Intersection of Two Linked Lists 문제 두 Linked List의 headA, headB가 주어진다. 두 List 가 만나는 교차점이 있다면 해당 노드를 반환하고, 두 리스트가 교차하지 않고 평행하다면 null을 반환하라. 입력 Input: intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3 skipA, skipB는 주어지는 값이 아닌 설명을 위한 예시이다. 출력 Output: Intersected at '8' 풀이 문제 - Linked List Cycle 와 매우 유사하다. unordered_set을 이용해 ListNode의 고유성을 기준으로 교차점이 있는지 판단한다....

January 10, 2023 · 1 min · 148 words · Me

LeetCode 공부 - Linked List Cycle

LeetCode(141) - Linked List Cycle 문제 Linked List의 head가 주어진다. 주어진 Linked List가 cycle을 갖는지 판단하라. 입력 head = [3,2,0,-4], pos = 1 pos는 주어지는 값이 아니고 설명을 돕기위한 예시입니다.. 출력 Output: true Explanation: There is a cycle in the linked list, where the tail connects to the 1st node (0-indexed). 풀이 ListNode의 포인터는 유니크하므로, 해당 포인터를 set으로 관리하여 중복을 확인한다. ListNode 타입의 unordered_set을 만든다. unordered_set에 현재 ListNode의 포인터가 없다면 현재 노드를 set에 삽입한다....

January 10, 2023 · 1 min · 127 words · Me

LeetCode 공부 - Same Tree

LeetCode(100) - Same Tree 문제 Binary Tree 두 개가 주어진다. 두 Binary Tree가 같은지 비교하여 같다면 True를, 다르다면 False를 반환한다. 입력 root = [1,null,2,3] 출력 [1,3,2] 풀이 주어진 Binary Tree의 root에서 중위순회한다. Inorder traversal은 Bianry Tree에서 좌측 노드를 먼저 순회 후, 자기 자신, 그리고 우측 노드를 탐색하는 방법이다. 주어진 입력에서 root노드는 1, 좌측 노드는 없으므로 자기 자신 1이 먼저 출력되고, 우측 노드로 이동 한다. 우측노드에서는 좌측노드로 이동, 마찬가지고 좌/우 노드가 없으므로 자기 자신이 출력된다....

January 9, 2023 · 2 min · 220 words · Me

LeetCode 공부 - Binary Tree Inorder Traversal

LeetCode(94) - Binary Tree Inorder Traversal 문제 Binary Tree의 root가 주어진다. Inorder Traversal(중위순회)를 한 결과를 반환하라. 입력 root = [1,null,2,3] 출력 [1,3,2] 풀이 주어진 Binary Tree의 root에서 중위순회한다. Inorder traversal은 Bianry Tree에서 좌측 노드를 먼저 순회 후, 자기 자신, 그리고 우측 노드를 탐색하는 방법이다. 주어진 입력에서 root노드는 1, 좌측 노드는 없으므로 자기 자신 1이 먼저 출력되고, 우측 노드로 이동 한다. 우측노드에서는 좌측노드로 이동, 마찬가지고 좌/우 노드가 없으므로 자기 자신이 출력된다....

January 9, 2023 · 2 min · 216 words · Me

LeetCode 공부 - Merge Sorted Array

LeetCode(88) - Merge Sorted Array 문제 두 개의 오름차순으로 정렬된 정수형 배열 nums1과 nums2가 주어진다. 또한 nums1의 element의 수를 나타내는 m과 nums2의 수를 나타내는 n이 주어진다. 두 배열을 병합하여 오른차순으로 정렬된 배열을 반환하라. 추가적인 배열을 선언하지 않고 nums1에 정렬된 배열을 반환하라. 입력 Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 출력 Output: [1,2,2,3,5,6] 풀이 하나의 배열을 내부적으로 선언하고, 두 배열의 index들을 하나씩 증가하며 새로 선언한 배열 index에 할당한 다음, 입력받은 두 배열을 모두 순회하면 선언한 배열을 nums1이 복사하여 풀 수 있다....

January 7, 2023 · 2 min · 295 words · Me