Top 10 Programming Tasks — Arrays
Найти минимальный элемент в отсортированном по возрастанию и циклически сдвинутом массиве
Как найти минимальный элемент в полностью отсортированном массиве? Это будет 1й элемент массива. Отлично, но что делать, если отсортированный массив сдвинут циклически? Например, [3, 4, 5, 6, 7, 8, 1, 2]. Массив отсортирован, но сдвинут влево на 2 позиции. Можно ли как-то использовать прежнюю сортировку?!
Разбор задачи
Вывести индекс заданного элемента в отсортированном по возрастанию и циклически сдвинутом массиве
Эта задача похожа на предыдущую, но в данном случае необходимо найти заданный элемент в массиве и вывести его индекс. Посмотрите, как изменить алгоритм прошлой задачи для решения текущей!
Разбор задачи
Найти отсутствующий элемент в массиве
Дан массив, в котором находятся натуральные числа от 1 до N, при этом каждое число представлено только 1 раз, но одно число заменили на 0. Вам необходимо найти это число. Здесь есть несколько вариантов решения: один из этих подходов — математический, другой — с использованием побитовых операций. Вы должны понимать и знать оба варианта, т.к. они помогут вам в решении других практических задач!
Разбор задачи
Преобразование массива путем произведения всех значений
Возможно, вам покажется, что это задача среднего уровня сложности. Однако в реальности ее решение простое, как 2 копейки. Вы же знаете, что массив можно обойти с конца к началу?! Отлично, тогда вы точно её решите!
Разбор задачи
Перестановка чётных/нечётных элементов в массиве
По сути, вам предлагается отсортировать массив по особому правилу: сначала чётные, затем нечётные элементы. Попробуйте сделать свою реализацию! Если не выйдет, смотрите, как выполнить технику перестановки элементов по заданному предикату.
Разбор задачи
Вывести максимальную сумму элементов в массиве
На мой взгляд, ключевая задача в этой подборке. Попробуйте решить её самостоятельно, вот массив [-1, 10, -9, 5, 6, -10]. Необходимо вывести максимальную сумму элементов в массиве.
Разбор задачи
Найти все пары чисел в массиве, сумма которых равна X
Здесь тоже есть несколько способов решения. В нашем разборе вы познакомитесь с техникой двух указателей, двигающихся с разных концов массива, а также с более простым способом — с помощью хэш-функции.
Разбор задачи
Есть ли такие два числа в массиве, перемножив которые мы получим заданное число X
Задача похожа на предыдущую, но здесь вы столкнётесь с более сложной операцией — умножение/деление.
Разбор задачи
Мажоритарный элемент массива — 1
Как найти элемент в массиве, который встречается в массиве более, чем в половине случаев?Заводим хэш-функцию и считаем количество вхождений каждого числа. Всё просто, согласен. А вы знаете, как это сделать без использования доп.О(N) памяти?!
Разбор задачи
Мажоритарный элемент массива — 2
Усложняем предыдущую задачу, теперь необходимо найти все элементы (если такие существуют), которые встречаются в массиве более, чем [N / 3] раз. Решаем эту задачу без использования доп.памяти!
Разбор задачи