Встречается на собеседованиях • сегодня
Какая сложность операций с ArrayList при частом получении максимума при нечастом добавлении
Для частого получения максимума при нечастом добавлении в `ArrayList` сложность операций будет:
- **Добавление элемента**: O(1) в среднем (амортизированно), O(n) в худшем случае при расширении массива.
- **Получение максимума**: O(n), так как требуется линейный поиск по всем элементам.
**Оптимизация**:
Если максимум нужен часто, лучше использовать структуру, поддерживающую его за O(1), например `PriorityQueue` (но добавление будет O(log n)).
**Пример с `ArrayList`**:
```java
List list = new ArrayList<>();
list.add(5);
list.add(3);
list.add(8);
int max = Collections.max(list); // O(n)
```
**Пример с `PriorityQueue`**:
```java
PriorityQueue pq = new PriorityQueue<>(Comparator.reverseOrder());
pq.add(5);
pq.add(3);
pq.add(8);
int max = pq.peek(); // O(1)
```
Выбор зависит от частоты операций: если добавление редкое, а поиск максимума частый, `PriorityQueue` эффективнее.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы