https://leetcode.com/problems/merge-k-sorted-lists/description
Q. k개의 정렬된 list 배열이 주어질 때, 이 모든 배열을 정렬된 상태로 하나의 리스트로 병합하여라.
Solution.
priority queue를 사용하면 간단한 문제.
이를 이용해서 코드를 만들어 본다.
더보기
C#
public ListNode MergeKLists(ListNode[] lists)
{
PriorityQueue<ListNode, int> pQ = new PriorityQueue<ListNode, int>();
for(int q = 0; q < lists.Length; ++q)
{
if(lists[q] != null)
pQ.Enqueue(lists[q], lists[q].val);
}
ListNode head = null;
ListNode prev = null;
while(pQ.Count > 0)
{
ListNode nodeQ = pQ.Peek();
pQ.Dequeue();
if(nodeQ == null) break;
ListNode node = new ListNode(nodeQ.val);
if(prev!=null) prev.next = node;
if(head == null) head = node;
prev = node;
nodeQ = nodeQ.next;
if(nodeQ != null)
pQ.Enqueue(nodeQ, nodeQ.val);
}
return head;
}
적절한 결과를 얻었다.
Note)
C#은 .NET 6.0 부터 priority queue가 생긴듯 하다.
자주 쓰자.
'Leetcode > Top 100 Liked' 카테고리의 다른 글
[Linked List][Hard] 25. Reverse Nodes in K-Group (0) | 2024.04.11 |
---|---|
[Linked List][Medium] 24. Swap Nodes in Pairs. (0) | 2024.04.11 |
[Linked List][Easy] 21. Merge Two Sorted Lists. (0) | 2024.04.09 |
[Linked List][Medium] 19. Remove Nth Node From End of List (0) | 2024.04.09 |
[Linked List][Medium] 2. Add Two Numbers. (0) | 2024.04.09 |