티스토리 뷰
가장 간단한 구현은 두 개의 array(list)를 첫 번째 array인 nums1으로 합친 후 정렬을 해주면 된다. 이 때는 시간 복잡도가 O (n log n) 이지만, Two Pointers (투 포인터)를 활용하면 O (n) 으로 두 개의 index를 각각 두고 각각의 element (요소)를 비교해가며 정렬된 array로 만들면 더 빠르게 구현이 가능하다.
1. 시간 복잡도: O (n log n)
class Solution:
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
for i in range(n):
nums1[m+i] = nums2[i]
nums1.sort()
2. 시간 복잡도: O (n)
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int i, j = 0, k = 0, l;
l = nums1.length;
int[] arr = new int[l], n1 = new int[m];
for(i=0; i<m; i++)
n1[i] = nums1[i];
i = 0;
while(i < m && j < n){
if(n1[i] < nums2[j])
arr[k++] = n1[i++];
else
arr[k++] = nums2[j++];
}
if(i < m){
for(; i<m; i++){
arr[k++] = n1[i];
}
}
if(j < n){
for(; j<n; j++){
arr[k++] = nums2[j];
}
}
System.arraycopy(arr, 0, nums1, 0, m+n);
}
}
반응형
'기술(Tech, IT) > 리트코드(LeetCode)' 카테고리의 다른 글
[LeetCode] 27. Remove Element (0) | 2023.08.07 |
---|---|
[LeetCode] 26. Remove Duplicates from Sorted Array (0) | 2023.08.06 |
[LeetCode] 50. Pow(x, n) (0) | 2023.08.05 |
[LeetCode] 1244. Design A Leaderboard (0) | 2023.08.02 |
[LeetCode] 1229. Meeting Scheduler (0) | 2023.08.01 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 이코노미스트
- 리트코드
- tf-idf
- C++
- java
- min heap
- 투 포인터
- 안드로이드
- 소켓 프로그래밍
- Computer Graphics
- leetcode
- I2C
- DICTIONARY
- ml
- Android
- 티스토리챌린지
- Hash Map
- 머신 러닝
- 이코노미스트 에스프레소
- 딕셔너리
- The Economist
- join
- vertex shader
- 오블완
- socket programming
- machine learning
- 파이썬
- The Economist Espresso
- Python
- defaultdict
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함
반응형