ALGORITHM/릿코드
88. Merge Sorted Array
JC0
2023. 11. 1. 16:05
Merge Sorted Array - LeetCode
Can you solve this real interview question? Merge Sorted Array - 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 an
leetcode.com
1.아이디어
투포인터 알고리즘을 사용하여 문제를 해결한다.
2.도식화
i는 m+n-1로 초기화한다. p1 = m-1, p2 = n-1로 초기화한다.
nums1[p1]과 nums[p2]를 비교한 후에 큰 값을 i에 넣어주고 큰 쪽 배열의 포인터를 -1, i를 -1한다.
nums2의 모든 요소를 nums1으로 옮길 때 까지 반복해야 하기 때문에 p2가 0보다 작을 때 까지 반복한다.
3.소스코드
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
if(n == 0) return;
if(m == 0)
for(int i = 0; i < nums2.length; i++)
{
nums1[i] = nums2[i];
}
int p1 = m-1;
int p2 = n-1;
int i = m + n -1;
while(p2 >= 0)
{
if(p1 >= 0 && nums1[p1] > nums2[p2])
{
nums1[i--] = nums1[p1--];
}
else
{
nums1[i--] = nums2[p2--];
}
}
}
}