// Задача: Написать метод, который будет возвращать true,

Если требуются соседние элементы, возрастающие на единицу, достаточно считать длину текущей серии и вернуть true при достижении трёх. Время O(n), память O(1).

Короткий ответ

Что ответить на собеседовании

Если требуются соседние элементы, возрастающие на единицу, достаточно считать длину текущей серии и вернуть true при достижении трёх. Время O(n), память O(1).

Подробный разбор

Ответ с пояснениями

Условие

// Задача: Написать метод, который будет возвращать true, // если поданный на вход массив int содержит 3 и более // последовательных числа в любом месте. // Например: // someMethod([2, 4, 5, 6, 2]) -> true // someMethod([0, 22, 23, 24, 29]) -> true // someMethod([1, 2, 3, 4]) -> true // someMethod([1, 2, 4]) -> false

Ответ

Если требуются соседние элементы, возрастающие на единицу, достаточно считать длину текущей серии и вернуть true при достижении трёх. Время O(n), память O(1).

Для Java:

static boolean someMethod(int[] nums) {
    if (nums == null || nums.length < 3) return false;
    int run = 1;
    for (int i = 1; i < nums.length; i++) {
        run = (long) nums[i] == (long) nums[i - 1] + 1
            ? run + 1 : 1;
        if (run >= 3) return true;
    }
    return false;
}

Преобразование в long предотвращает переполнение при прибавлении к максимальному int. Здесь последовательность обязана занимать соседние позиции; если разрешён произвольный порядок элементов, требуется другое условие и алгоритм.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее