본문 바로가기

알고리즘/해커랭크

[해커랭크] Merge two sorted linked lists

문제링크 : www.hackerrank.com/challenges/merge-two-sorted-linked-lists/problem

 

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

웬만하면 리스트 문제풀이에서 새로운 리스트를 생성하는 일은 안하려 했는데 도저히 생각나지 않았다.

다른 풀이는 재귀로 풀었는데 이해하기 쉬운코드는 아니었다.

static SinglyLinkedListNode mergeLists(SinglyLinkedListNode head1, SinglyLinkedListNode head2) {
        SinglyLinkedList sl = new SinglyLinkedList();
        while(head1!=null && head2!=null){
            if(head1.data<=head2.data){
                sl.insertNode(head1.data);
                head1=head1.next;
            }else{
                sl.insertNode(head2.data);
                head2=head2.next;
            }
        }
        if(head1==null){
            while(head2!=null){
                sl.insertNode(head2.data);
                head2=head2.next;
            }
        }else{
            while(head1!=null){
                sl.insertNode(head1.data);
                head1=head1.next;
            }
        }
        return sl.head;
    }