문제 이해
입력
- 정수 배열
nums1, nums2
- 배열의 각 길이
m, n
nums1.length == m + n
nums2.length == n
출력
요구 사항
- 2개의 정수 배열을 오름 차순으로 정렬
- 입력으로 주어진 정수 배열은 이미 정렬됨
- 시간 복잡도는
O(n + m)으로 해결
문제 풀이
- 주어진 시간 복잡도를 맞추기 위해서는, 단일 for, while 루프를 통해서 해결해야함
- 생각해볼 수 있는 idea는 two-pointer
- 포인터 지정
- 결과를 저장할 포인터 p
nums1의 포인터 p1 = m-1
nums2의 포인터 p2 = n-1
- while 문을 통해 p1, p2의 크기를 비교
- p1이 클 경우,
nums1[p1]을 nums1[p]에 할당 후 p1 -1
- p2가 클 경우,
nums2[p2]을 nums1[p]에 할당 후 p2 -1
- 하나의 사이클이 종료되면
p-1