미해결
정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
Merge k Sorted Lists 질문 드립니다.
안녕하세요 강사님.
우선순위 큐 관련 질문 드립니다.
아래 코드와 같이 ListNode 배열 객체인 listNode 를
오름차순으로 설정한 우선순위 큐 에 셋팅(offer) 을 한 후
ListNode l1 = new ListNode(1);
l1.next = new ListNode(4);
l1.next.next = new ListNode(5);
ListNode l2 = new ListNode(1);
l2.next = new ListNode(3);
l2.next.next = new ListNode(4);
ListNode l3 = new ListNode(2);
l3.next = new ListNode(6);
ListNode[] listNode = {l1, l2, l3};
// ------------중간 생략 ----------------//
PriorityQueue<ListNode> pq = new PriorityQueue<ListNode>(Comp);
for(ListNode node : lists) {
if(node != null) {
pq.offer(node);
}
// print(node);
// System.out.println("1 node.val: " + node.val);
// System.out.println("1 pq.peek(): " + pq.peek().val);
}
왜 아래 코드와 같이 다시 offer 를 하는지 궁금합니다.
이미 위 에서 offer 를 했기 때문에 다시 offer 를 하면 중복된 값이 들어가는게 아닌가 하는 생각이 들어서요.
while(!pq.isEmpty()) {
ListNode node = pq.poll();
p.next = node;
p = p.next;
if(node.next != null) {
pq.offer(node.next);
}
//System.out.println("2 pq.peek(): " + pq.peek().val);
}
답변 부탁드립니다.
감사합니다.