21. Merge Two Sorted Lists

양갱·2025년 1월 21일

leetcode

목록 보기
2/14
post-thumbnail

21. Merge Two Sorted Lists

Intuition

head에 있는 노드를 비교해서 새 ListNode에 넣는다.

Approach

  1. ListNode를 하나 만든다.
  2. list1list2의 head를 한 칸씩 이동하면서 비교한다.
  3. 새로 만든 ListNode에 더 작은 값을 다음 노드로 지정한다.
  4. ListNode들을 한 칸씩 옮긴다.
  5. 복잡한 기분이 들어서 서치 후 Dummy Node 도입

Complexity

  • Time complexity: O(n)
  • Space complexity: O(1)
    • 참고: ListNode는 O(1)이다.

Code

/**
 * 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 list1, ListNode list2) {
        ListNode dummy = new ListNode(0);
        ListNode che = dummy;
        while (list1 != null && list2 != null){
            if (list1.val <= list2.val){
                che.next = list1;
                list1 = list1.next;
            }
            else{
                che.next = list2;
                list2 = list2.next;
            }
            che = che.next;
        }
        if (list1 == null){
            che.next = list2;
        }
        else {
            che.next = list1;

        }
        return dummy.next;

    }
}
profile
일기장처럼 기록하는 용도

0개의 댓글