300x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 딥러닝
- 구글 킥스타트
- 그래프
- 프로그래밍
- DFS
- 네트워크
- BFS
- 킥스타트
- 동적 프로그래밍
- nlp
- AI
- 백준
- 코딩
- 프로그래머스
- 동적프로그래밍
- 브루트포스
- OS
- PYTHON
- 파이썬
- 코딩테스트
- kick start
- 리눅스
- google coding competition
- 운영체제
- 코딩 테스트
- CSS
- 알고리즘
- dp
- linux
- 순열
Archives
- Today
- Total
목록Merge sort (1)
오뚝이개발자
linked list 정렬하기
linked list를 정렬하는데 추가적인 메모리를 쓰지 않고 O(nlogn)의 시간복잡도로 하기 위해선 어떻게 해야할까? 답은 merge sort를 쓰면 된다!!!! 그런데 조금 복잡한 부분이 일반적인 array의 경우 index로 분할하여 정렬하면 되는데 linked list의 경우 어떻게 나누어야 하는지이다. 이를 위해선 3개의 포인터를 쓰면 된다. 그 세 포인터를 각각 p,slow,fast라 해보자. p,slow,fast가 차례로 한 칸씩 전진하는데 p->slow->fast의 순서대로 나아간다. 이 때, fast가 None이거나 fast.next가 None이 되면 p.next를 None으로 만들어주고 p와 slow로 linked list를 분할한다. 그럼 p가 가리키는 연결리스트가 l이 되고, s..
코딩 테스트/리트코드
2021. 1. 3. 18:04