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
- PYTHON
- 알고리즘
- 그래프
- BFS
- 코딩
- 구글 킥스타트
- 리눅스
- 운영체제
- 프로그래머스
- DFS
- nlp
- OS
- 브루트포스
- linux
- 동적 프로그래밍
- 코딩 테스트
- 파이썬
- CSS
- kick start
- 순열
- 백준
- google coding competition
- 동적프로그래밍
- AI
- 프로그래밍
- 코딩테스트
- 킥스타트
- 딥러닝
- dp
- 네트워크
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