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 |