코딩테스트를 보다보면 주로 1초(10^8)안에 풀어야 하는 것들이 많이 나와서 좀 더 빠른 알고리즘을 사용하기 위해선 정리가 필요해보였다.
add | remove | get | contains | 자료 구조 | |
---|---|---|---|---|---|
ArrayList | O(1) | O(n) | O(1) | O(n) | Array |
LinkedList | O(1) | O(1) | O(n) | O(n) | Linked List |
add | contains | next | 자료 구조 | |
---|---|---|---|---|
HashSet | O(1) | O(1) | O(h/n) | Hash Table |
LinkedHashSet | O(1) | O(1) | O(1) | Hash Table + Linked List |
EnumSet | O(1) | O(1) | O(1) | Bit Vector |
TreeSet | O(logn) | O(logn) | O(logn) | Red-black tree |
offer() : 큐에 요소를 추가하고 반환하는 잘못된 요소를 추가 할 수없는 경우(큐가 가득 찬 경우)에 특정 예외를 throw 하지 않는다.
peek() : 큐의 처음에 있는 원소를 삭제하지 않고 가져온다. 큐가 비어있으면 null을 반환
poll() : 큐의 처음에 있는 원소를 가져온다. 큐에 원소가 없으면 null을 반환
offer | peek | poll | size | 자료 구조 | |
---|---|---|---|---|---|
PriorityQueue | O(logn) | O(1) | O(logn) | O(1) | Priority Heap |
LinkedList | O(1) | O(1) | O(1) | O(1) | Array |
ArrayDequeue | O(1) | O(1) | O(1) | O(1) | Linked List |
get | containsKey | next | 자료 구조 | |
---|---|---|---|---|
HashMap | O(1) | O(1) | O(h/n) | Hash Table |
LinkedHashMap | O(1) | O(1) | O(1) | Hash Table + Linked List |
EnumMap | O(1) | O(1) | O(1) | Array |
TreeMap | O(logn) | O(logn) | O(logn) | Red-black tree |
map의 value를 기반으로 탐색은 시간복잡도가 어떻게 되나요 ? 그부분도 있으면 좋을 거 같아요
잘했어요