본문으로 바로가기

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

 

Merge two sorted linked lists | HackerRank

Given the heads of two sorted linked lists, change their links to get a single, sorted linked list.

www.hackerrank.com