알고리즘 풀이(358)
-
[알고리즘] TreeSet
add(E e): O(logn) addAll(): O(mlogn) (m이 들어오는 set element 개수) ceiling(): O(logn) clear(): O(n) contains(): O(logn) first(): O(1) floor(): O(logn) higher(): O(logn) last(): O(1) headSet: O(m + logn) (먼저 찾는데 logn 찾고 가져오는데 m) lower(E e): O(logn) pollFirst(): O(logn) pollLast(): O(logn) remove(): O(logn) size(): O(1)
2024.03.10 -
[알고리즘] ArrayDeque
특징: stack으로 사용하고자 할때 Stack보다 빠르고 queue로 사용하고자 할때 LinkedList보다 빠르다. remove나 contains를 제외하고는 모든 오퍼레이션을 상수 시간에 할 수 있다. size(): O(1) isEmpty(): O(1) getFirst(): O(1) getLast(): O(1) set(): O(n) iterator(): O(1) listIterator(): O(1) add(E e): O(1) (amortized time) add(int index, E e): O( index 오른쪽 배열 크기) (amortized time) remove(): O(n) removeFirst(): O(1) removeLast(): O(1) peek(): O(1) element(): O(..
2024.03.10 -
[알고리즘] HashMap
중요: 같지 않은 key들이 같은 hashCode를 가지게 하면 해시 충돌이 일어나기 때문에 속도가 느려질 수밖에 없다. 따라서 hashCode가 겹치지 않도록 해주어야 한다. get: O(1) put: O(1) remove: O(1) size: O(1) clear: O(n) containsKey: O(1) containsValue: O(1) getOrDefault: O(1)
2024.03.10 -
[알고리즘] HashSet
특징: 내부적으로는 HashMap을 사용한다. add하는 값을 key로 사용한다. 중요: HashMap은 hashCode() method를 이용해서 key에 대한 해시코드를 구한다. 해시테이블은 이 코드를 해싱 함수를 이용해 버킷에 맵핑한다. Object 객체에서 구현되어 있는 hashCode()는 참조값을 사용한다. Constructor - HashSet(int initialCapacity): 초기 수용량을 줄 수 있다. 너무 크게 하면 iteration 시간이 비효율적이게 된다. add(E e): O(1) clear(): O(n) contains(Object o): O(1) isEmpty(): O(1) iterator(): O(1) remove(Object o): O(1) size(): O(1) sp..
2024.03.10 -
[알고리즘] LinkedList
특징: 시작 노드만 알면 연결된 모든 노드를 알 수 있다. Doubly-linked list size(): O(1) isEmpty(): O(1) get(): O(n) getFirst(): O(1) getLast(): O(1) set(): O(n) iterator(): O(1) listIterator(): O(1) add(E e): O(1) (amortized time) add(int index, E e): O( index 오른쪽 배열 크기) (amortized time) remove(): O(n) removeFirst(): O(1) removeLast(): O(1) peek(): O(1) element(): O(1) peekFirst(): O(1) peekLast(): O(1) pollFirst(): O..
2024.03.10 -
[알고리즘] ArrayList 메서드별 시간 복잡도
size(): O(1) isEmpty(): O(1) get(): O(1) set(): O(1) iterator(): O(1) listIterator(): O(1) add(E e): O(1) (amortized time) add(int index, E e): O( index 오른쪽 배열 크기) (amortized time) remove(): O(n) removeRange(int fromIndex, int toIndex): O(n - fromIndex) indexOf(): O(n) contains(): O(n) addAll(E e): O(m) (넣는 배열 크기) addAll(int index, E e): O(n + m) sort(): O(nlogn) ensureCapacity: O(n) ? clear(): ..
2024.03.09