Algorithm/LeetCode

[LeetCode] - Merge Two Sorted Lists

두 LinkedList ListNode를 합치는 문제

 

sudo code

null 이면 다른 node return

두 node 비교하고 값이 작은 수를 넣고 큰 수는 next로 넣으면 되지 않을까
근데 재귀함수로
n1.val compare n2.val
answer(작은거) 가리킨다 큰거 -> answer.next(큰거)

풀이

/**
 * 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) 
    {
        // 접근
        // 두 ListNode를 합치는 문제
        // l1.val compare l2.val
        // 작은것을 answer에 넣고 next는 그 다음 작은 수를 가리킨다.
        // 일단 null처리 부터
        // 관련 Topics 보니 Recursion이 있다 재귀로 풀어보자
        
        if(l1 == null) return l2;
        if(l2 == null) return l1;
        
        
        // answer 생성
        ListNode answer;
        
        // 비교 작으면 작은게 현재 답에 들어가고 큰 수가 다음(next)에 들어감
        if(l1.val < l2.val)
        {
            answer = l1;
            answer.next = mergeTwoLists(answer.next, l2);
        }
        else
        {
            answer = l2;
            answer.next = mergeTwoLists(answer.next, l1);
        } 
        
        return answer;   
    }
}

Runtime: 0 ms, faster than 100.00% of Java online submissions for Merge Two Sorted Lists.
Memory Usage: 38.5 MB, less than 35.61% of Java online submissions for Merge Two Sorted Lists.

 

건강이 최고다 모두 건강하시길 기원합니다

'Algorithm > LeetCode' 카테고리의 다른 글

[LeetCode] - Climbing Stairs  (0) 2021.04.08
[LeetCode] Convert Binary Number in a Linked List to Integer  (0) 2021.04.03
[LeetCode] Majority Element  (0) 2021.03.19
HashMap Sorting in java  (0) 2021.03.18
[LeetCode] Lemonade Change  (1) 2021.03.17