Гид по технологиям

Алгоритмы

Проверка, является ли строка палиндромом
Алгоритмы 4 min read

Проверка, является ли строка палиндромом

Палиндром — строка, которая читается одинаково в обе стороны. Используйте двухуказательный алгоритм для O(n) времени и O(1) памяти; при необходимости предварительно фильтруйте пробелы и пунктуацию.

Итеративный бинарный поиск на C, C++ и Python
Алгоритмы 6 min read

Итеративный бинарный поиск на C, C++ и Python

Итеративный бинарный поиск быстро находит элемент в отсортированном массиве за O(log n) сравнений и использует O(1) памяти. В статье — примеры на C, C++ и Python, тесты, ошибки и альтернативы.

Наибольшая и наименьшая цифра числа — примеры
Алгоритмы 4 min read

Наибольшая и наименьшая цифра числа — примеры

Для целого числа достаточно пройти по его цифрам и обновлять максимум и минимум. В языках C/C++/C/Java это удобно сделать через остаток и деление, а в Python и JavaScript можно также использовать строковый подход (преобразовать в str и применять max/min). Учитывайте нулевые и отрицательные числа.

Число Армстронга: алгоритм и примеры на C
Алгоритмы 5 min read

Число Армстронга: алгоритм и примеры на C

Число Армстронга — это число, равное сумме степеней своих цифр (для n‑значного числа степень = n). Приведены алгоритм, псевдокод и пример на C с тестовыми случаями и практическими замечаниями.

Рекурсивный линейный поиск массива
Алгоритмы 4 min read

Рекурсивный линейный поиск массива

Рекурсивный линейный поиск проверяет элементы массива по одному (или по паре с двух концов) с помощью рекурсивных вызовов. В статье показаны рабочие реализации на C++, Python, JavaScript и C, объяснены сложность и ограничения, а также приведены тесты и критерии приёмки.

Сумма первых n чисел — рекурсивный подход
Алгоритмы 3 min read

Сумма первых n чисел — рекурсивный подход

Этот материал объясняет, как найти сумму первых n натуральных чисел с помощью рекурсии. Приведены псевдокод и реализации на C++, Python, C, JavaScript и Java, а также альтернативы, сложность и тесты.

nPr — перестановки: формула и примеры на популярных языках
Алгоритмы 3 min read

nPr — перестановки: формула и примеры на популярных языках

nPr (перестановки) — число упорядоченных размещений r из n: nPr = n!/(n-r)!. В коде лучше умножать n×(n-1)×...×(n-r+1) и контролировать типы (BigInt/BigInteger) для избежания переполнений.

Среднее массива — примеры на Python, C++, JS, C
Алгоритмы 3 min read

Среднее массива — примеры на Python, C++, JS, C

Среднее (mean) массива — это сумма всех элементов, делённая на их количество. В статье показаны простые, безопасные реализации на Python, C++, JavaScript и C, разбор пограничных случаев (пустой массив, переполнение) и рекомендации по тестам.

Сортировка выбором — объяснение и код
Алгоритмы 4 min read

Сортировка выбором — объяснение и код

Сортировка выбором последовательно выбирает экстремум из неотсортированной части и помещает его в нужную позицию. Простая, in-place, но медленная для больших наборов: O(n²).

Алгоритм скользящего окна в Go
Алгоритмы 5 min read

Алгоритм скользящего окна в Go

Алгоритм скользящего окна позволяет проходить по массиву один раз, обновляя агрегат при сдвиге окна. В статье есть рабочий пример на Go, анализ сложности, тесты и советы по использованию.

Символ с наивысшей частотой в строке
Алгоритмы 4 min read

Символ с наивысшей частотой в строке

Используйте частотный массив или словарь: один проход по строке, отслеживайте максимум. Для ASCII — массив из 256, для Unicode — Map/словарь.

НОД и НОК двух чисел — алгоритмы и код
Алгоритмы 4 min read

НОД и НОК двух чисел — алгоритмы и код

В статье объяснён алгоритм Евклида для вычисления НОД (наибольший общий делитель) и формула для вычисления НОК (наименьшее общее кратное). Приведены рабочие примеры на C++, Python, C и JavaScript, обсуждены важные случаи (нулевые и отрицательные значения), альтернативные реализации, оценка сложности и набор тестов.

Сумма элементов массива в C++, Python и JavaScript
Алгоритмы 3 min read

Сумма элементов массива в C++, Python и JavaScript

В статье показаны простые и надёжные способы вычислить сумму всех элементов массива на C++, Python и JavaScript. Разбираем пошаговый алгоритм, готовые примеры кода, возможные подводные камни (переполнение) и шаблоны приёмки.

Перестановки строки в C++, Python, JavaScript и C
Алгоритмы 4 min read

Перестановки строки в C++, Python, JavaScript и C

Кратко: перестановки строки — все возможные упорядоченные расположения её символов. В статье показаны рекурсивные реализации для C++, Python, JavaScript и C, а также альтернативы, оценка сложности и рекомендации по применению.

Сумма арифметической прогрессии: формула и примеры
Алгоритмы 5 min read

Сумма арифметической прогрессии: формула и примеры

Арифметическая прогрессия — это последовательность с постоянной разностью. Сумму можно найти итеративно или по формуле S = n/2*(2a+(n-1)d). В статье — примеры и тесты на нескольких языках.

Проверить симметричность строки — алгоритм и примеры
Алгоритмы 3 min read

Проверить симметричность строки — алгоритм и примеры

Простой O(n)-алгоритм сравнивает первую и вторую половины строки; при нечётной длине центральный символ игнорируется. В статье есть реализации на C++, Python и JavaScript и советы для краевых случаев.

Проверка идентичности матриц в C++, Python, JS и C
Алгоритмы 4 min read

Проверка идентичности матриц в C++, Python, JS и C

Два массива (матрицы) считаются идентичными, если у них одинаковые размеры и все соответствующие элементы равны. Ниже — простые и надёжные реализации на C++, Python, JavaScript и C с объяснением подхода, сложностью и тестовыми случаями.

Обходы бинарного дерева: inorder, preorder, postorder
Алгоритмы 5 min read

Обходы бинарного дерева: inorder, preorder, postorder

Кратко: объясняю три классических способа обхода бинарного дерева — inorder, preorder, postorder — с алгоритмами, визуализациями, примерами на Python и практическими советами.

Разворот массива: итеративно и рекурсивно
Алгоритмы 5 min read

Разворот массива: итеративно и рекурсивно

Кратко: разворот массива меняет порядок элементов на обратный. Рассмотрены два базовых метода: итеративный (обмен пар элементов в цикле) и рекурсивный (обмен с шагом внутрь). Приведены примеры на C++, Python и JavaScript, сравнение сложностей, тесты и рекомендации для практического применения.

Удаление дубликатов в массивах — C++/Python/JS
Алгоритмы 5 min read

Удаление дубликатов в массивах — C++/Python/JS

В статье показаны простые и эффективные способы удалить дубликаты из массивов на примере неотсортированных и отсортированных данных. Приведены реализации на C++, Python и JavaScript, пояснены временная и пространственная сложность, альтернативы и советы для собеседований.