[LeetCode/Swift] 21번-Merge Two Sorted Lists

kimdocs...📄·2022년 8월 7일

Algorithm

목록 보기
6/6

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

0) 해결 결과

Submission link : https://leetcode.com/submissions/detail/767680892/

1) 문제 접근 과정 및 구현 방법

  • 링크드리스트 문제, 노드가 가지고 있는 next노드에 반복해서 접근하며 순회한다.
  • head = 정답노드/current = 현재 탐색중인 노드
  • 내부의 val값을 비교하여 작은 것을 우선으로 current.next에 저장한다
  • 후에 list node에 next를 저장하여 다음 노드로 이동한다.
  • 마지막으로 현재 탐색중인 노드를 current.next(작은것을 우선으로 저장한 노드)로 저장하여 한칸옯겨간다.
  • list중 둘중 하나라도 nil이라면 루프를 멈추고 탈출한다.
  • list 중 하나는 nil, 하나는 정상적인 값을 가지고 있을 수도 있으므로 l1이 옵셔널일 경우 대안으로 l2가 저장되게 한다.

2) 코드 첨부

class Solution {
    func mergeTwoLists(_ list1: ListNode?, _ list2: ListNode?) -> ListNode? {
        var l1 = list1
        var l2 = list2
        
        let head: ListNode = ListNode(0)
        var current = head
        
        while l1 != nil && l2 !=  nil {
            let val1 = l1!.val
            let val2 = l2!.val
            
            if val1 < val2 {
                current.next = l1!
                l1 = l1?.next
            } else {
                current.next = l2!
                l2 = l2?.next
            }
            current = current.next!
        }
        current.next = l1 ?? l2
        return head.next
    }
}

3) 어려웠거나 해결하지 못한 부분이 있을때 그에 대한 질문 제시

  • 너무 예전에 배운 개념이라 생각해내는 것 조차 어려웠다.
profile
👩‍🌾 GitHub: ezidayzi / 📂 Contact: ezidayzi@gmail.com

0개의 댓글