Встречается на собеседованиях • сегодня

Можно ли линейность превратить в логарифмическую форму сложности

Да, можно, если заменить линейный поиск или обработку на алгоритм с делением данных пополам, например, бинарный поиск или алгоритмы типа "разделяй и властвуй".

Пример:
Линейный поиск в массиве — O(n):

java
int linearSearch(int[] arr, int target) {
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == target) return i;
    }
    return -1;
}

Бинарный поиск (предполагает отсортированный массив) — O(log n):

java
int binarySearch(int[] arr, int target) {
    int left = 0, right = arr.length - 1;
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (arr[mid] == target) return mid;
        if (arr[mid] < target) left = mid + 1;
        else right = mid - 1;
    }
    return -1;
}

Также можно использовать структуры данных, поддерживающие логарифмические операции (например, TreeSet или TreeMap).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы