Skip to main content

13 posts tagged with "twoPointers"

View All Tags

· 2 min read

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

Solution 1

/**
* @param {number[]} nums1
* @param {number} m
* @param {number[]} nums2
* @param {number} n
* @return {void} Do not return anything, modify nums1 in-place instead.
*/
var merge = function (nums1, m, nums2, n) {
while (n > 0) {
// 뒤에서 부터 도는게 핵심

if (nums1[m - 1] > nums2[n - 1]) {
// nums1이 nums2보다 클 경우, nums1의 자리를 뒤로 배치
nums1[m + n - 1] = nums1[m - 1];
m--;
} else {
// nums1이 nums2보다 작을 경우, nums1의 자리에 num2 배치
nums1[m + n - 1] = nums2[n - 1];
n--;
}
}
};

아래처럼 알고리즘이 돌아감

const nums1 = [4, 5, 6, 0, 0, 0];
const m = 3;
const nums2 = [1, 2, 3];
const n = 3;

merge(nums1, m, num2, n);

// 풀이
// [4, 5, 6, 0, 0, 6]
// [4, 5, 6, 0, 5, 6]
// [4, 5, 6, 4, 5, 6]
// [4, 5, 3, 4, 5, 6]
// [4, 2, 3, 4, 5, 6]
// [1, 2, 3, 4, 5, 6]