LeetCode - 21. Merge Two Sorted Lists(Linked List, Recursion)*

YAMAMAMO·2022년 4월 27일
0

LeetCode

목록 보기
52/100

문제

list1과 list2로 정렬된 두 개의 링크드리스트의 헤드가 주어집니다.
두 리스트를 하나의 정렬된 리스트에 병합합니다. 리스트는 처음 두 목록의 노드를 연결하여 만들어야 합니다.
병합된 링크드리스트의 헤드를 반환합니다.

https://leetcode.com/problems/merge-two-sorted-lists/

You are given the heads of two sorted linked lists list1 and list2.
Merge the two lists in a one sorted list. The list should be made by splicing together the nodes of the first two lists.
Return the head of the merged linked list.

Example 1:

Input: list1 = [1,2,4], list2 = [1,3,4]
Output: [1,1,2,3,4,4]

Example 2:

Input: list1 = [], list2 = []
Output: []

Example 3:

Input: list1 = [], list2 = [0]
Output: [0]

풀이

자바입니다.

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if(l1==null) return l2;
        if(l2==null) return l1;
        
        ListNode newHead = new ListNode(0);
        ListNode move=newHead;
        
        while(l1!=null&&l2!=null){
            if(l1.val>l2.val){
                move.next=l2;
                l2=l2.next;
            }else{
                move.next=l1;
                l1=l1.next;
            }
            
             move=move.next;
        }
        if(l1!=null){
            move.next=l1;
        }
        if(l2!=null){
            move.next=l2;
        }
           
        return newHead.next;
    }
}

슬슬 재귀함수를 사용해서 푸는 문제가 나오고 있다. 재귀 이해가 안 간다. 조만간 공부해서 재귀를 사용해서 풀어 봐야겠다.

profile
안드로이드 개발자

0개의 댓글