loading
본문으로 바로가기

문제 설명

Easy

  • 감소하지 않는 순서로 정렬된 두 개의 정수 배열 nums1 및 nums2가 제공된다.
  • 각각 nums1 및 nums2의 요소 수를 나타내는 두 개의 정수 m 및 n이 제공됩니다.
  • nums1과 nums2를 감소하지 않는 순서로 정렬된 단일 배열로 병합합니다.
  • 최종 정렬된 배열은 함수에 의해 반환되지 않고 대신 배열 nums1 내부에 저장되어야 합니다. 이를 수용하기 위해 nums1의 길이는 m + n입니다.
  • 여기서 첫 번째 m 요소는 병합해야 하는 요소를 나타내고 마지막 n 요소는 0으로 설정되므로 무시해야 합니다. nums2의 길이는 n입니다.

 

**문제에서 요구하는 풀이는 새로운 배열을 생성하지 않고, 제시된 nums1과 nums2의 배열만을 이용하여 풀이를 해야하며 Output은 nums1 배열로 한다.

그리고 반환되는 nums1의 길이는 m+n이라 제시되었으니, nums1 = [1, 2, 3, 0, 0, 0]에 있는 인수 0을 nums2 배열의 인수로 변경해서 넣고 최종 요구사항인 오름차순으로 정렬하여 반환해야한다.

 

접근

var merge = function(nums1, m, nums2, n) {
    let cnt = 0;
    
    //for문을 통해 nums1 배열 내 요소에 하나씩 접근한다.
    for (let i=0; i<nums1.length; i++) { 
    	//현재 들어있는 인수 외 0에 접근해야 하므로 배열 길이인 변수 m을 이용하여, i >= m 조건을 설정한다.
        if (i >= m) {
        	//예로 m이 3이라면, 4번째 ~ 6번째 인수를 nums2의 1번째 ~ 3번째 인수로 splice 함수를 통해 변경한다.
            nums1.splice(i,1, nums2[cnt]);
            cnt++;
        }
    }
    
    //최종적인 형태는 오름차순으로 배열 정렬하여 반환한다.
    return nums1.sort((a,b) => a-b);
};

 

 

Merge Sorted Array - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com