Проверка, является ли строка палиндромом
Палиндром — строка, которая читается одинаково в обе стороны. Используйте двухуказательный алгоритм для O(n) времени и O(1) памяти; при необходимости предварительно фильтруйте пробелы и пунктуацию.
Палиндром — строка, которая читается одинаково в обе стороны. Используйте двухуказательный алгоритм для O(n) времени и O(1) памяти; при необходимости предварительно фильтруйте пробелы и пунктуацию.
Итеративный бинарный поиск быстро находит элемент в отсортированном массиве за O(log n) сравнений и использует O(1) памяти. В статье — примеры на C, C++ и Python, тесты, ошибки и альтернативы.
Для целого числа достаточно пройти по его цифрам и обновлять максимум и минимум. В языках C/C++/C/Java это удобно сделать через остаток и деление, а в Python и JavaScript можно также использовать строковый подход (преобразовать в str и применять max/min). Учитывайте нулевые и отрицательные числа.
Число Армстронга — это число, равное сумме степеней своих цифр (для n‑значного числа степень = n). Приведены алгоритм, псевдокод и пример на C с тестовыми случаями и практическими замечаниями.
Рекурсивный линейный поиск проверяет элементы массива по одному (или по паре с двух концов) с помощью рекурсивных вызовов. В статье показаны рабочие реализации на C++, Python, JavaScript и C, объяснены сложность и ограничения, а также приведены тесты и критерии приёмки.
Этот материал объясняет, как найти сумму первых n натуральных чисел с помощью рекурсии. Приведены псевдокод и реализации на C++, Python, C, JavaScript и Java, а также альтернативы, сложность и тесты.
nPr (перестановки) — число упорядоченных размещений r из n: nPr = n!/(n-r)!. В коде лучше умножать n×(n-1)×...×(n-r+1) и контролировать типы (BigInt/BigInteger) для избежания переполнений.
Среднее (mean) массива — это сумма всех элементов, делённая на их количество. В статье показаны простые, безопасные реализации на Python, C++, JavaScript и C, разбор пограничных случаев (пустой массив, переполнение) и рекомендации по тестам.
Сортировка выбором последовательно выбирает экстремум из неотсортированной части и помещает его в нужную позицию. Простая, in-place, но медленная для больших наборов: O(n²).
Алгоритм скользящего окна позволяет проходить по массиву один раз, обновляя агрегат при сдвиге окна. В статье есть рабочий пример на Go, анализ сложности, тесты и советы по использованию.
Используйте частотный массив или словарь: один проход по строке, отслеживайте максимум. Для ASCII — массив из 256, для Unicode — Map/словарь.
В статье объяснён алгоритм Евклида для вычисления НОД (наибольший общий делитель) и формула для вычисления НОК (наименьшее общее кратное). Приведены рабочие примеры на C++, Python, C и JavaScript, обсуждены важные случаи (нулевые и отрицательные значения), альтернативные реализации, оценка сложности и набор тестов.
В статье показаны простые и надёжные способы вычислить сумму всех элементов массива на C++, Python и JavaScript. Разбираем пошаговый алгоритм, готовые примеры кода, возможные подводные камни (переполнение) и шаблоны приёмки.
Кратко: перестановки строки — все возможные упорядоченные расположения её символов. В статье показаны рекурсивные реализации для C++, Python, JavaScript и C, а также альтернативы, оценка сложности и рекомендации по применению.
Арифметическая прогрессия — это последовательность с постоянной разностью. Сумму можно найти итеративно или по формуле S = n/2*(2a+(n-1)d). В статье — примеры и тесты на нескольких языках.
Простой O(n)-алгоритм сравнивает первую и вторую половины строки; при нечётной длине центральный символ игнорируется. В статье есть реализации на C++, Python и JavaScript и советы для краевых случаев.
Два массива (матрицы) считаются идентичными, если у них одинаковые размеры и все соответствующие элементы равны. Ниже — простые и надёжные реализации на C++, Python, JavaScript и C с объяснением подхода, сложностью и тестовыми случаями.
Кратко: объясняю три классических способа обхода бинарного дерева — inorder, preorder, postorder — с алгоритмами, визуализациями, примерами на Python и практическими советами.
Кратко: разворот массива меняет порядок элементов на обратный. Рассмотрены два базовых метода: итеративный (обмен пар элементов в цикле) и рекурсивный (обмен с шагом внутрь). Приведены примеры на C++, Python и JavaScript, сравнение сложностей, тесты и рекомендации для практического применения.
В статье показаны простые и эффективные способы удалить дубликаты из массивов на примере неотсортированных и отсортированных данных. Приведены реализации на C++, Python и JavaScript, пояснены временная и пространственная сложность, альтернативы и советы для собеседований.