Вот вопросы этой недели
1) Найти все дубликаты в массиве
Хэш-карта
При обходе массива проверьте, присутствует ли текущий элемент в карте или нет, если присутствует, то это дублирующий элемент, засуньте его в массив ans и продолжите. Если нет, то сохраните его в map.
Один проход & постоянное пространство
Идея заключается в том, чтобы использовать элементы в качестве индексов и отмечать достигнутые ими позиции как отрицательные от их исходного значения. Таким образом, мы определяем, что если мы снова достигнем этой позиции (т.е. она будет отрицательной), то это означает, что элемент, который мы использовали в качестве индекса, был дублирующим числом.
2) Максимальная площадь острова
Выполните DFS-обход и для каждого обхода подсчитайте количество единиц и отметьте посещенную позицию нулем. Затем верните максимальное значение, полученное по всем областям.
3) Перевернуть целое число
Для инвертирования целого числа достаточно проверить, существует ли оно в диапазоне целых чисел или нет.
4) Двоичное сложение
Выполните двоичное сложение строк, сохраняя перенос.
5) Палиндромное число
Выполните обратную операцию и сравните.
6) Счастливое число
Выполните необходимую логическую операцию.
7) Недостающее число
Фактическая сумма — сумма массива, даст недостающее число.
8) Максимальное произведение трех цифр
После сортировки, произведение последних трех цифр или произведение первых двух цифр и последней цифры.
9) Сила двух
Используйте оператор сдвига вправо (>>) для сдвига числа и подсчета единиц, присутствующих в его двоичной форме. Если число равно 1, то оно является степенью двойки.
10) Минимальные перемещения для равенства элементов массива
Увеличение или уменьшение элементов одинаково. Идея заключается в том, чтобы уменьшить все элементы до нуля. Мы можем достичь этого, сначала вычитая элементы на минимальное число, а затем складывая сумму оставшихся элементов.
array = [2, 3, 4]
subtract 2 (minimum no.) from all the elements
array = [0, 1, 2]
now to make the array all zero, no. of operations
will be equal to sum of all the elements.
formula generated = sum of array - minNum * size of array
11) Минимальные удаления для того, чтобы сделать массив делимым
Идея проста: число может делить группу чисел, если gcd всех этих чисел делится на это число. Итак, мы вычисляем gcd всех этих чисел и затем для удаления наименьшего числа, которое не делится, сортируем данный массив, а затем просто проверяем.