Algorithm/시간복잡도
Deque와 PriorityQueu의 시간복잡도
chbong
2024. 7. 18. 19:48
Deque
- 양 끝에서의 삽입과 삭제 연산이 O(1)의 시간복잡도를 가진다.
- addFirst(e): O(1) - 맨 앞에 요소 추가
- addLast(e): O(1) - 맨 뒤에 요소 추가
- removeFirst(): O(1) - 맨 앞의 요소 제거
- removeLast(): O(1) - 맨 뒤의 요소 제거
- getFirst(): O(1) - 맨 앞의 요소 반환
- getLast(): O(1) - 맨 뒤의 요소 반환
- offerFirst(e): O(1) - 맨 앞에 요소 추가 (실패 시 false 반환)
- offerLast(e): O(1) - 맨 뒤에 요소 추가 (실패 시 false 반환)
- pollFirst(): O(1) - 맨 앞의 요소 제거 및 반환 (비어있으면 null 반환)
- pollLast(): O(1) - 맨 뒤의 요소 제거 및 반환 (비어있으면 null 반환)
- peekFirst(): O(1) - 맨 앞의 요소 반환 (비어있으면 null 반환)
- peekLast(): O(1) - 맨 뒤의 요소 반환 (비어있으면 null 반환)
- removeFirstOccurrence(o): O(n) - 특정 요소의 첫 번째 발생 제거
- removeLastOccurrence(o): O(n) - 특정 요소의 마지막 발생 제거
- size(): O(1) - 요소의 개수 반환
PriorityQueue
- add(e): O(log n) - 요소 추가
- offer(e): O(log n) - 요소 추가 (실패 시 false 반환)
- remove(): O(log n) - 첫 번째 요소 제거
- poll(): O(log n) - 첫 번째 요소 제거 및 반환 (비어있으면 null 반환)
- peek(): O(1) - 첫 번째 요소 반환 (비어있으면 null 반환)
- element(): O(1) - 첫 번째 요소 반환 (비어있으면 예외 발생)
- contains(o): O(n) - 특정 요소가 포함되어 있는지 확인
- size(): O(1) - 요소의 개수 반환
- clear(): O(n) - 모든 요소 제거