Post

leetcode(리트코드)88-Merge Sorted Array

leetcode Array intro - Merge Sorted Array 문제입니다.

1. 문제

https://leetcode.com/problems/merge-sorted-array/


2. Input , Output


3. 분류 및 난이도

leetcode의 Array introduction에 있는 문제입니다.
eazy난이도의 문제입니다.


4. 문제 해석

  • 말그대로 병합정렬 문제입니다. 보통 병합정렬과 다른 점은, 배열을 미리 주어준다는 점입니다. 보통 병합정렬은 새로운 배열을 생성해야하는데, 미리 준 배열에 병합정렬을 수행해야합니다.

5. code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        vector<int> num(nums1.size(),0);
        for(size_t i =0;i<nums1.size();++i)
        {
            num[i]=nums1[i];
        }
        int i=0,j=0,k=0;
        while(i<m && j<n)
        {
            if(num[i]<=nums2[j])
            {
                nums1[k++] = num[i++];
            }
            else
                nums1[k++] = nums2[j++];
        }
        int tmp = i > m ? j : i;
        while(i<m)
        {
            nums1[k++] = num[i++];
        }
        while(j<n)
            nums1[k++] = nums2[j++];

    }
};

6. 결과 및 후기, 개선점

시간

이미 개선한 코드입니다.
처음에는 함수를 하나 더 만들어줘서 배열들을 관리하였으나, 그럴 필요가 없다는 것을 알고 한 함수내에서 처리하도록 작성하였습니다.

This post is licensed under CC BY 4.0 by the author.