본문 바로가기
728x90
반응형

LinkedList8

21. Merge Two Sorted Lists 주어진 두 개의 정렬된 연결 리스트를 하나의 정렬된 리스트로 병합하는 문제입니다. 첫 번째 두 리스트의 노드를 이어 붙여서 새로운 정렬된 연결 리스트를 만들어야 합니다. 병합된 연결 리스트의 헤드 노드를 반환해야 합니다. /** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNode next; * public ListNode(int val=0, ListNode next=null) { * this.val = val; * this.next = next; * } * } */ public class Solution { public ListNode MergeTwoLists(ListNode li.. 2024. 4. 23.
rearrangeLastN 단일 연결 리스트에서 마지막 n개의 노드를 리스트의 시작 부분으로 이동 주어진 단일 연결 리스트에서 마지막 n개의 노드를 리스트의 시작 부분으로 이동시켜야 합니다. 예를 들어: 입력 리스트가 [1, 2, 3, 4, 5]이고 n이 3이면, 결과는 [3, 4, 5, 1, 2]가 되어야 합니다. 입력 리스트가 [1, 2, 3, 4, 5, 6, 7]이고 n이 1이면, 결과는 [7, 1, 2, 3, 4, 5, 6]이 되어야 합니다. // Singly-linked lists are already defined with this interface: // class ListNode { // public T value { get; set; } // public ListNode next { get; set; } // } .. 2024. 3. 20.
reverseNodesInKGroups 주어진 연결 리스트 l의 노드들을 크기 k씩 뒤집고 수정된 리스트를 반환해야 합니다. k는 양수이며, l의 길이보다 작거나 같아야 합니다. 만약 연결 리스트의 노드 수가 k의 배수가 아니라면, 뒤에 남은 노드는 그대로 유지되어야 합니다. 노드의 값은 변경할 수 없으며, 노드 자체만 변경할 수 있습니다. 예시: 예시 1: l = [1, 2, 3, 4, 5]이고 k = 2인 경우, 출력은 [2, 1, 4, 3, 5]가 되어야 합니다. 예시 2: l = [1, 2, 3, 4, 5]이고 k = 1인 경우, 출력은 [1, 2, 3, 4, 5]가 되어야 합니다. 예시 3: l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]이고 k = 3인 경우, 출력은 [3, 2, 1, 6, 5, 4, 9, 8.. 2024. 3. 15.
mergeTwoLinkedLists 두 개의 오름차순으로 정렬된 단일 연결 리스트가 주어졌을 때, 이 두 리스트를 병합하는 것입니다. 병합된 리스트도 오름차순으로 정렬되어야 합니다. 즉, 첫 번째 두 리스트의 노드를 연결하여 새로운 단일 연결 리스트를 만들어야 합니다. 이 문제를 풀기 위해서는 O(l1.length + l2.length) 시간 복잡도를 가져야 합니다. 이것이 면접에서 요구되는 작업입니다. 예를 들어, 다음과 같은 두 개의 연결 리스트가 주어졌다고 가정해 봅시다: 리스트 1: 1 -> 3 -> 5 리스트 2: 2 -> 4 -> 6 이 두 리스트를 병합하면 다음과 같은 결과가 나와야 합니다: 병합된 리스트: 1 -> 2 -> 3 -> 4 -> 5 -> 6 이 문제를 풀기 위해서는 두 리스트를 순회하면서 노드를 비교하고 새로운 .. 2024. 3. 14.
addTwoHugeNumbers 두 개의 큰 정수가 링크드 리스트로 주어졌습니다. 각 링크드 리스트 요소는 0부터 9999까지의 숫자로, 정확히 4자리 숫자를 나타냅니다. 나타낸 숫자에는 선행 0이 있을 수 있습니다. 이 두 큰 정수를 더하고 결과를 동일한 형식으로 반환하는 것이 문제입니다. 예시: a = [9876, 5432, 1999]이고 b = [1, 8001]인 경우, 결과는 [9876, 5434, 0]이 됩니다. 설명: 987654321999 + 18001 = 987654340000. a = [123, 4, 5]이고 b = [100, 100, 100]인 경우, 결과는 [223, 104, 105]가 됩니다. 설명: 12300040005 + 10001000100 = 22301040105. // Singly-linked lists .. 2024. 3. 11.
removeKFromList 주어진 연결 리스트에서 값이 k인 노드를 모두 제거하는 문제입니다. 이 문제를 해결하기 위해서는 연결 리스트를 순회하면서 값이 k인 노드를 발견하면 해당 노드를 제거해야 합니다. // Singly-linked lists are already defined with this interface: // class ListNode { // public T value { get; set; } // public ListNode next { get; set; } // } // ListNode solution(ListNode l, int k) { if(l == null){ return null; } ListNode current = l; while(current != null && current.value == k){.. 2024. 3. 8.
160. Intersection of Two Linked Lists 두 개의 연결 리스트가 주어졌을 때, 두 리스트가 교차하는 지점을 찾는 문제입니다. 교차 지점이 없으면 null을 반환해야 합니다. List A: A1 → A2 ↘ C1 → C2 → C3 ↗ List B:B1 → B2 → B3 이 경우, 리스트 A와 리스트 B는 C1에서 교차하고, 이 지점이 교차 지점이 됩니다. 두 연결 리스트의 길이를 각각 계산합니다. 두 리스트의 길이 차이를 구하고, 길이가 더 긴 리스트의 포인터를 그 차이만큼 이동시킵니다. 이제 두 포인터를 동시에 이동시켜 교차 지점을 찾습니다. public class ListNode { public int val; public ListNode next; public ListNode(int val = 0, ListNode next = null) {.. 2023. 11. 15.
728x90
반응형