Description
두개의 정렬된 링크드리스트(Linked List)를 머지하여 반환하는 문제입니다.
Solution 1. Merge Two pointers
static SinglyLinkedListNode mergeLists(SinglyLinkedListNode head1, SinglyLinkedListNode head2) {
SinglyLinkedListNode dHead = new SinglyLinkedListNode(0);
SinglyLinkedListNode cur = dHead;
while(head1 != null && head2 !=null){
if(head1.data <= head2.data){
cur.next = head1;
head1 = head1.next;
}else{
cur.next = head2;
head2 = head2.next;
}
cur = cur.next;
}
if(head1 == null) cur.next = head2;
if(head2 == null) cur.next = head1;
return dHead.next;
}
2개의 포인터를 이용해서 리스트별로 진행하며 작은 값부터 더미헤드에 붙여 나갑니다. 한쪽노드의 값이 모두 추가되었을 경우 다른 한쪽의 남은 노드는 그대로 마지막 노드에 연결해 주시면 됩니다.
Reference
'알고리즘 > HackerRank' 카테고리의 다른 글
[HackerLank] Balanced Brackets - 문제풀이 (0) | 2022.03.25 |
---|---|
[HackerLank] Queue using Two Stacks - 문제풀이 (0) | 2022.03.25 |
[HackerLank] Truck Tour - 문제풀이 (0) | 2022.03.25 |
[HackerLank] New Year Chaos - 문제풀이 (0) | 2022.03.25 |
[HackerLank] Recursive Digit Sum - 문제풀이 (0) | 2022.03.25 |