코딩 인터뷰
-
Linked List | Partition ListAlgorithm/Linked List 2021. 7. 19. 23:07
Given the head of a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the nodes in each of the two partitions. 주어진 Linked List를 파티션 하라는 문제이다. Integer 값이 주어지는데, 이보다 작으면 순서대로 왼쪽에, 크거나 같으면 순서대로 오른쪽에 나열해서 새로운 Linked List를 리턴하는 문제이다. Dummy Node를 이용해서 손쉽게 풀 수 있다. /** * Definition for ..
-
Linked List | Rotate List카테고리 없음 2021. 7. 13. 21:17
Given the head of a linked list, rotate the list to the right by k places. 리스트를 k번 돌리라는 medium 난이도의 문제이다. 시계 반대방향으로 도는것인데, 맨 마지막 노드를 앞으로 가져오는 방식이다. 이 k는 노드 길이보다 더 길 수 있다. 예를들면, 5개 노드가 있는 리스트를 2 * 10^9회 돌라고 할 수 있다. 조건은 아래와 같다. k의 값이 아주 크기때문에, 시키는대로 한번씩 돌면, 매우 효율적이지 않다. 그래서 나머지를 구하는 modulus(%) 를 이용한 해법을 구현했다. 솔루션은 아래와 같았다. class Solution { public ListNode rotateRight(ListNode head, int k) { if(hea..
-
Linked List | Flatten a Multilevel Doubly Linked ListAlgorithm/Linked List 2021. 5. 27. 10:16
You are given a doubly linked list which in addition to the next and previous pointers, it could have a child pointer, which may or may not point to a separate doubly linked list. These child lists may have one or more children of their own, and so on, to produce a multilevel data structure, as shown in the example below. Flatten the list so that all the nodes appear in a single-level, doubly li..
-
Linked List | Odd Even Linked ListAlgorithm/Linked List 2021. 5. 24. 22:44
Given the head of a singly linked list, group all the nodes with odd indices together followed by the nodes with even indices, and return the reordered list. The first node is considered odd, and the second node is even, and so on. Note that the relative order inside both the even and odd groups should remain as it was in the input. Linked List가 주어졌을 때, 홀수번째 노드들과 짝수번째 노드들을 나누어서, 모든 홀수는 앞쪽에, 모든 짝..
-
Linked List | Swapping Nodes in a Linked ListAlgorithm/Linked List 2021. 5. 15. 20:14
You are given the head of a linked list, and an integer k. Return the head of the linked list after swapping the values of the kth node from the beginning and the kth node from the end (the list is 1-indexed). 앞에서 k번째, 그리고 뒤에서 k번째 노드의 값을 swap, 즉 바꾸라는 Medium 난이도의 문제이다. 아래와 같은 조건도 주었다. 노드의 값이 크지 않기때문에 swap하는것은 별로 큰 문제가 없겠지만, 총 리스트의 크기가 100,000 이기때문에 (컴퓨터에게는 그렇게 큰 숫자는 아니지만) 리스트를 travel 하는 숫자를 적게 하는..
-
Linked List | Merge In Between Linked ListsAlgorithm/Linked List 2021. 5. 13. 23:29
You are given two linked lists: list1 and list2 of sizes n and m respectively. Remove list1's nodes from the ath node to the bth node, and put list2 in their place. Medium 난이도의 문제이다. 두 Linked List가 주어졌을 때, list1의 a번부터 b를 삭제한 후, 삭제된 자리에 list2를 넣는 문제이다. O(N)으로 해결하기 위해 아래와 같이 접근했다. class Solution { public ListNode mergeInBetween(ListNode list1, int a, int b, ListNode list2) { ListNode temp = null; ..