오늘부터 1일 😃
nums1, nums2 는 오름차순 배열nums1 의 길이는 m+n , nums2 의 길이는 nnums1 배열에 nums2 배열을 하나로 병합하기nums1배열에서 처음 m 개 요소는 병합해야 하는 요소,n 개 요소는 0으로 설정되어 무시하는 요소nums1 에 저장하기var merge = function(nums1, m, nums2, n) {
if(n !== 0) nums1.splice(-n) // 🐶
let num1Idx = 0 // 🐱
let num2Idx = 0
for(let i=0; i<m+n; i++) { // 🐹
if(num2Idx >= n) { // 🐰
break;
}
if(num1Idx >= m) { // 🦊
nums1.push(nums2[num2Idx])
num2Idx = num2Idx + 1
continue;
}
if(nums1[num1Idx] >= nums2[num2Idx]) { // 🐻
nums1.push(nums2[num2Idx])
num2Idx = num2Idx+1
} else {
num1Idx = num1Idx+1 // 🐼
}
}
nums1.sort((a, b) => a-b) // 🐥
};
nums1, nums2의 인덱스를 각각 지정해놓고 조건마다 비교해가며 탐색하는 Two Pointers 알고리즘
시간 복잡도 : O((m+n)log(m+n))
공간 복잡도 : O(1)
마지막에 sort를 한번 더 해줘서 시간 복잡도가 O(nlogn)이 되었다 🥲 통과는 했지만 시간 복잡도를 줄이는 방식으로 다시 풀고 추가해서 올리기!! 그리고 함수 return이 아닌지 잘 읽기!!
✅ 1일1알
오 글쏨씨가 장난이 아닌데여?!
다음 문제풀이 기대할께요!!!👍