가장 간단한 구현은 두 개의 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 ..
26번 문제와 마찬가지로 in-place 즉, input으로 주어진 nums를 직접 변경해야한다. val과 같은 값의 element가 주어지면 del 을 통해 하나씩 삭제해 나가면 정답을 어렵지 않게 구현할 수 있다. class Solution: def removeElement(self, nums: List[int], val: int) -> int: i = 0 while i < len(nums): if nums[i] == val: del nums[i] else: i += 1 return len(nums)
in-place 즉, input으로 주어진 nums의 값을 변경해야하는 것이 중요한 포인트 중 하나다. unique한 element를 집어주는 index (i)가 필요하고, 전제 nums에서 어디까지 진행했는지를 추적해주는 또 다른 index (j)를 두고 nums의 길이만큼 반복문을 실행하면 어렵지 않게 구현이 가능하다. class Solution: def removeDuplicates(self, nums: List[int]) -> int: if not nums: return 0 i = 0 for j in range(1, len(nums)): print(i, j, nums[i], nums[j], nums) if nums[j] != nums[i]: i += 1 nums[i] = nums[j] return..
- Total
- Today
- Yesterday
- DICTIONARY
- 파이썬
- leetcode
- min heap
- 머신 러닝
- join
- 오블완
- machine learning
- Python
- defaultdict
- 티스토리챌린지
- vertex shader
- Hash Map
- Computer Graphics
- socket programming
- tf-idf
- I2C
- ml
- java
- 리트코드
- 투 포인터
- The Economist Espresso
- 이코노미스트
- Android
- 소켓 프로그래밍
- 안드로이드
- The Economist
- 이코노미스트 에스프레소
- C++
- 딕셔너리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |