LeetCode Top Interview 150) Merge Sorted Array

EBAB!·2023년 8월 23일
0

LeetCode

목록 보기
1/35

시작에 앞서, LeetCode가 프로그래머스, 백준 코딩테스트와의 차이점이 있다면 in-place를 요구합니다.
반환이 아니라 전달받은 리스트 자체를 수정하는 것이고 메모리 사용량을 채점 요소로 여깁니다.
이런 점을 통해서 메모리 사용량을 최소화하는 방향까지 고려해보는 코드를 작성해볼 수 있는 연습시간을 가질 수 있을 듯 합니다..

Question

You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in nums1 and nums2 respectively.

Merge nums1 and nums2 into a single array sorted in non-decreasing order.

The final sorted array should not be returned by the function, but instead be stored inside the array nums1. To accommodate this, nums1 has a length of m + n, where the first m elements denote the elements that should be merged, and the last n elements are set to 0 and should be ignored. nums2 has a length of n.

Constraints:

  • nums1.length == m + n
  • nums2.length == n
  • 0 <= m, n <= 200
  • 1 <= m + n <= 200
  • -10^9 <= nums1[i], nums2[j] <= 10^9
class Solution:
    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:




두 문자열을 받아서 병합한 뒤 정렬하는 문제입니다. return값은 없이 nums2를 nums1에 병합하여 정렬하는 방식을 요구합니다.

제가 생각한 코드는 다음과 같습니다.

class Solution:
    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
        nums1[m:] = nums2
        nums1.sort()

매우 간단해 보이지만 개인적으로 나름 몇 가지 장점이 들어가 있다고 생각하는 코드입니다.

  • 가독성이 좋고 코드를 보고 바로 이해할 수 있는 방식입니다.
  • 추가적인 메모리를 사용하지 않습니다.
  • list.sort() 방식으로 in-place 조건을 유지합니다.

쉬운 문제고 조건도 어렵지 않아서 크게 고민할 부분은 없었던 문제입니다.

profile
공부!

0개의 댓글