LeetCode/Top Interview 150

88. Merge Sorted Array

hyunkookim 2024. 11. 25. 16:52

88. Merge Sorted Array

 

https://youtu.be/P1Ic85RarKY?si=bOPe6rAYv_eZp-R4

 

class Solution:
    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
        """
        Do not return anything, modify nums1 in-place instead.
        """
        # last index nums1
        # nums1의 마지막 인덱스를 설정 (m개의 요소 + n개의 요소가 합쳐질 공간)
        last_idx = m + n - 1

        # merge in reverse order
        # nums1과 nums2를 역순으로 병합
        while m > 0 and n > 0:
            if nums1[m-1] > nums2[n-1]:  # nums1의 마지막 값이 nums2의 마지막 값보다 큰 경우
                nums1[last_idx] = nums1[m-1]  # nums1의 값을 nums1의 끝부분에 배치
                m -= 1  # nums1의 비교 인덱스를 하나 줄임
            else:  # nums1[m-1] <= nums2[n-1]
                nums1[last_idx] = nums2[n-1]  # nums2의 값을 nums1의 끝부분에 배치
                n -= 1  # nums2의 비교 인덱스를 하나 줄임
            last_idx -= 1  # 병합된 공간의 인덱스를 하나 줄임

        # fill nums1 with leftover nums2 elements
        # nums2에 남은 값들을 nums1에 채움 (nums1에 남은 값들은 이미 정렬된 상태라 추가 작업 불필요)
        while n > 0:
            nums1[last_idx] = nums2[n-1]  # nums2의 남은 값을 nums1에 추가
            n, last_idx = n - 1, last_idx - 1  # nums2 인덱스와 병합 공간 인덱스를 하나씩 줄임

'LeetCode > Top Interview 150' 카테고리의 다른 글

189. Rotate Array  (0) 2024.11.26
169. Majority Element  (0) 2024.11.26
80. Remove Duplicates from Sorted Array II  (0) 2024.11.25
26. Remove Duplicates from Sorted Array  (0) 2024.11.25
27. Remove Element  (0) 2024.11.25